sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo aplicar paginación al resultado de una consulta SQL con Joins?

Es curioso cómo escribir una pregunta te hace pensar y, de hecho, ayuda mucho a imaginar una solución para tu propio problema.

Pude resolver este problema simplemente agregando la parte de paginación de la consulta a una subconsulta de mi consulta principal, en lugar de a la consulta principal en sí.

Por ejemplo, en lugar de hacer:

SELECT client.id, client.name ...
FROM clients AS client
LEFT JOIN client_account_types AS cat ON client.id = cat.client_id
FULL JOIN account_types AS at ON cat.account_type_id = at.id
ORDER BY client.name ASC
LIMIT 10 OFFSET 30;

Estoy haciendo esto:

SELECT client.id, client.name ...
FROM (
    SELECT * FROM clients
    ORDER BY name ASC
    LIMIT 10 OFFSET 0
) AS client
LEFT JOIN client_account_types AS cat ON client.id = cat.client_id
FULL JOIN account_types AS at ON cat.account_type_id = at.id;

Espero que esto también ayude a otras personas.