Je développe une galerie en ligne avec le vote et avoir une table séparée pour les photos et votes (pour chaque vote, je suis stocker l'ID de l'image et la ID de l'électeur). Les tables liées comme ceci: PICTURE <--(1:n, using VOTE.picture_id)-- VOTE
. Je voudrais interroger la table des images et trier la sortie par le nombre de votes. C'est ce que je fais:Paging dans SQL avec LIMIT/OFFSET se traduit parfois en double sur des pages différentes
SELECT
picture.votes_number,
picture.creation_date,
picture.author_id,
picture.author_nickname,
picture.id,
picture.url,
picture.name,
picture.width,
picture.height,
coalesce(anon_1."totalVotes", 0)
FROM picture
LEFT OUTER JOIN
(SELECT
vote.picture_id as pid,
count(*) AS "totalVotes"
FROM vote
WHERE vote.device_id = <this is the query parameter> GROUP BY pid) AS anon_1
ON picture.id = anon_1.pid
ORDER BY picture.votes_number DESC
LIMIT 10
OFFSET 0
OFFSET est différent pour des pages différentes, bien sûr.
Cependant, il y a des photos avec le même ID qui sont affichés sur les différentes pages. Je suppose que la raison est le tri, mais ne peut pas construire une meilleure requête, ce qui ne permettra pas les doublons. Quelqu'un pourrait-il me donner un indice?
Merci d'avance!
Cela a aidé, merci! –