PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come applicare l'impaginazione al risultato di una query SQL con Join?

È divertente come scrivere una domanda ti faccia pensare e in realtà aiuta molto a immaginare una soluzione per il tuo problema.

Sono stato in grado di risolvere questo problema semplicemente aggiungendo la parte di impaginazione della query a una sottoquery della mia query principale, anziché alla query principale stessa.

Ad esempio, invece di fare:

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;

Sto facendo questo:

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;

Spero che questo aiuti anche altre persone.