Ich habe Probleme, eine Abfrage, dass eine Tabelle mit Posts und eine mit Poststimmen, wo Postsvotes enthält die ID des Beitrags und die Art der Abstimmung (' UP 'oder' DOWN '), gibt die Anzahl der UP- und DOWN-Stimmen für jeden Post aus.COUNT (*) nicht in Ergebnis enthalten, wenn 0 und Probleme Beitritt
habe ich versucht, die folgende Abfrage Ansichten mit:
DROP VIEW P, U, D;
CREATE VIEW P AS SELECT p.id, p.title, p.content FROM posts as p, users as u WHERE u.id = p.userId GROUP BY p.id ORDER BY p.datetime DESC;
CREATE VIEW U AS SELECT count(*) as Uvotes, postId FROM postsvotes, posts WHERE posts.id = postsvotes.postId AND postsvotes.type = 'UP' GROUP BY postId;
CREATE VIEW D AS SELECT count(*) as Dvotes, postId FROM postsvotes, posts WHERE posts.id = postsvotes.postId AND postsvotes.type = 'DOWN' GROUP BY postId;
SELECT Uvotes, Dvotes, u.postId as postId FROM U, D WHERE u.postId = d.postId GROUP BY postId;
es irgendwie funktioniert nur, aber wenn es mindestens 1 Stimme ‚UP‘ und 1 Stimme ‚DOWN‘ für den Posten, es ist sonst nicht zu berücksichtigen es. Ich habe herausgefunden, dass das Problem in den U- und D-Ansichten liegt, wo die Datensätze mit 0 Stimmen nicht in der Ansicht angezeigt werden.
Irgendeine Idee, wie man löst?
Sie höchstwahrscheinlich nicht diese Ansichten benötigen, eine einzelne Abfrage die Arbeit erledigen kann - wahrscheinlich eine 'äußere join' verwenden. Wenn Sie Beispieldaten und erwartete Ergebnisse liefern könnten, würde dies das Verständnis erleichtern. – sgeddes
Welches Ergebnis möchten Sie? Bitte fügen Sie hier weitere Details hinzu. –
Danke! Ich bin nicht sehr gut mit SQL, aber ich denke, eine One-Query-Lösung wäre perfekt. ! [Beitragstabelle] (http://imgur.com/Fu0MU3z.png)! [Beitragsliste] (http://imgur.com/CWlJeCA.png) [Das ist das Ergebnis, das ich bekomme] (http: // imgur .com/qE51ekf.png), aber es sollte auch Zeilen mit 0 upvotes und/oder 0 downvotes enthalten, während es im Moment nur Zeilen mit mindestens 1 upvote und 1 downvote gibt. –