PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment appliquer la pagination au résultat d'une requête SQL avec les Joins ?

C'est drôle comme écrire une question vous fait réfléchir et aide en fait beaucoup à imaginer une solution à votre propre problème.

J'ai pu résoudre ce problème en ajoutant simplement la partie pagination de la requête à une sous-requête de ma requête principale, plutôt qu'à la requête principale elle-même.

Par exemple, au lieu de faire :

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;

Je fais ceci :

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;

J'espère que cela aidera également d'autres personnes.