Ich entwickle eine Online - Galerie mit Voting und habe eine separate Tabelle für Bilder und Stimmen (für jede Stimme speichere ich die ID des Bildes und die ID des Wählers). Die Tabellen bezogen sich wie folgt: PICTURE <--(1:n, using VOTE.picture_id)-- VOTE
. Ich möchte die Bildtabelle abfragen und die Ausgabe nach Stimmenzahl sortieren. Dies ist, was ich mache:Paging in SQL mit LIMIT/OFFSET führt manchmal zu Duplikaten auf verschiedenen Seiten
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 ist für verschiedene Seiten natürlich anders.
Es gibt jedoch Bilder mit derselben ID, die auf den verschiedenen Seiten angezeigt werden. Ich denke, der Grund ist die Sortierung, kann aber keine bessere Abfrage erstellen, die keine Duplikate erlaubt. Kann mir jemand einen Hinweis geben?
Vielen Dank im Voraus!
Das half, danke! –