Hi,
Ich habe eine Tabelle mit Kommentaren und eine zweite Tabellen mit likes.
Die like-Tabelle enthält jeweils die KommentarID, die userID desjenigen, der geliked hat einen bool-Wert, der angibt, ob es gelikt ist, oder nicht.
Mein SQL-Befehl sucht mir nun alle Kommentare mit bestimmten Kriterien heraus und zeigt mir über einen SUM Befehl die Anzahl der likes auf diesen Kommentar an.
Um entscheiden zu können, ob ich dem Benutzer ein 'Gefällt mir' oder 'Gefällt mir nicht mehr' anbiete, brauche ich noch die Information, ob unter einem dieser 'likes' der mit der aktuellen userID dabei ist, oder nicht. Nach viel rumprobieren habe ich es geschafft. Ich frage mich allerdings, ob das so kopmliziert sein muss, oder ob ich die einfache Lösung übersehe. Es geht hier vor allem um die 2. Zeile:
Ich habe eine Tabelle mit Kommentaren und eine zweite Tabellen mit likes.
Die like-Tabelle enthält jeweils die KommentarID, die userID desjenigen, der geliked hat einen bool-Wert, der angibt, ob es gelikt ist, oder nicht.
Mein SQL-Befehl sucht mir nun alle Kommentare mit bestimmten Kriterien heraus und zeigt mir über einen SUM Befehl die Anzahl der likes auf diesen Kommentar an.
Um entscheiden zu können, ob ich dem Benutzer ein 'Gefällt mir' oder 'Gefällt mir nicht mehr' anbiete, brauche ich noch die Information, ob unter einem dieser 'likes' der mit der aktuellen userID dabei ist, oder nicht. Nach viel rumprobieren habe ich es geschafft. Ich frage mich allerdings, ob das so kopmliziert sein muss, oder ob ich die einfache Lösung übersehe. Es geht hier vor allem um die 2. Zeile:
Code:
SELECT comments.commentID, comments.date_create, comments.username, comments.content,
SUM(IF(likes.like_bool=1,1,0)), SUM(IF(likes.userID=? AND likes.like_bool=1,1,0))
FROM comments
LEFT JOIN likes ON comments.commentID=likes.commentID
WHERE comment.topic=?
GROUP BY comments.commentID
ORDER BY comments.date_create DESC LIMIT ?, ?