ossionline
Grünschnabel
Hi,
Ich habe eine Gallerie, in der angemeldete User Kommentare hinterlassen können. Die abfrage dafür habe ich immer über temporary tables gestaltet, dies ist jetzt bei meinem neuen Provider nicht mehr möglich.
Die alte anfrage sah wie folgt aus:
Mit der 1. Anfrage habe ich die neusten Kommentare (höhste comment_id) der verschiedenen Bilder, die Bilder-id sowie die Anzahl der Kommentare zu diesen Bild bekommen. Mit der 2. Abfrage habe ich die User-Informationen anhand der comment_id geholt.
Nun wollte ich das ganze ohne temporary tables lösen, mein erster gedanke war:
Dies funktioniert jedoch leider nicht.
Wie kann ich die Anfrage gestalten, dass das erwünschte Ergebnis rauskommt?
hier nochmal der Aufbau von comment: comment_id image_id user_id user_name comment_headline comment_text
und users: user_id user_name
Hab auch schon überlegt, dass ich users gar nicht brauche, da ich von dort nur den user-namen holen will, der aber auch in comments steht
My-SQL-Version ist 4.0.24_Debian-10-log
Ich habe eine Gallerie, in der angemeldete User Kommentare hinterlassen können. Die abfrage dafür habe ich immer über temporary tables gestaltet, dies ist jetzt bei meinem neuen Provider nicht mehr möglich.
Die alte anfrage sah wie folgt aus:
Code:
CREATE TEMPORARY TABLE comments_temp TYPE = HEAP
SELECT MAX( comment_id ) as comment_id, image_id, COUNT( * ) AS comment_sum
FROM comments
GROUP BY image_id
ORDER BY comment_id DESC;
Code:
SELECT *
FROM comments c, users u, comments_temp x
WHERE c.user_id = u.user_id
AND c.comment_id = x.comment_last_id
LIMIT 10
Mit der 1. Anfrage habe ich die neusten Kommentare (höhste comment_id) der verschiedenen Bilder, die Bilder-id sowie die Anzahl der Kommentare zu diesen Bild bekommen. Mit der 2. Abfrage habe ich die User-Informationen anhand der comment_id geholt.
Nun wollte ich das ganze ohne temporary tables lösen, mein erster gedanke war:
Code:
SELECT *
FROM 4images_comments c, 4images_users u
WHERE c.user_id = u.user_id
AND c.comment_id = (
SELECT MAX( comment_id ) AS comment_id, image_id, COUNT( * ) AS comment_sum
FROM 4images_comments
GROUP BY image_id
ORDER BY comment_id DESC)
LIMIT 10
Dies funktioniert jedoch leider nicht.
Wie kann ich die Anfrage gestalten, dass das erwünschte Ergebnis rauskommt?
hier nochmal der Aufbau von comment: comment_id image_id user_id user_name comment_headline comment_text
und users: user_id user_name
Hab auch schon überlegt, dass ich users gar nicht brauche, da ich von dort nur den user-namen holen will, der aber auch in comments steht
My-SQL-Version ist 4.0.24_Debian-10-log
Zuletzt bearbeitet: