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.