sql >> Database >  >> RDS >> PostgreSQL

Hoe paginering toepassen op het resultaat van een SQL-query met Joins?

Het is grappig hoe het schrijven van een vraag je aan het denken zet, en het helpt eigenlijk enorm bij het bedenken van een oplossing voor je eigen probleem.

Ik heb dit probleem kunnen oplossen door simpelweg het pagineringsgedeelte van de zoekopdracht toe te voegen aan een subquery van mijn hoofdquery, in plaats van aan de hoofdquery zelf.

Bijvoorbeeld, in plaats van te doen:

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;

Ik doe dit:

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;

Ik hoop dat dit andere mensen ook helpt.



  1. Verzamelde advertentieklikken en weergaven

  2. Meta-commando's in Psycopg2 - \d werkt niet

  3. DevArt's dotConnect voor Oracle versus de ADO.NET-gegevensprovider van DataDirect

  4. Cronjob of MySQL-event?