ich das folgende Skript bin Ausführung:MySQL - COUNT und MAX in derselben Abfrage. MAX ignoriert WHERE-Klausel
SELECT a.*,
gg.image as 'recent_image_file'
FROM
( SELECT c.cid,
c.category_name AS 'cat_name',
COUNT(g.id) AS image_count,
c.category_image AS 'images',
c.estgendpref,
MAX(n.id) as 'recent_image'
FROM tbl_category c
LEFT JOIN tbl_gallery_category g
ON c.cid=g.cat_id
LEFT JOIN tbl_gallery n
ON n.id=g.image_id
WHERE n.date_active < NOW()
GROUP BY c.cid
ORDER BY c.category_name ASC
) a
INNER JOIN tbl_gallery gg
ON a.recent_image = gg.id;
Alles ist in Ordnung, außer der Rückkehr der MAX (n.id) die Klausel WHERE ignoriert und gibt die Top-ID für die Kategorie. Wie bekomme ich die MAX (n.id), um das Maximum für die Ergebnismenge einschließlich der WHERE-Klausel zurückzugeben? Vielen Dank.
Beachten Sie, dass 'WHERE n.date_active
Fügen Sie der Unterabfrage SELECT-Klausel 'MAX (n.date_active) als max_date' hinzu. Gibt es etwas Größeres zurück als 'NOW()'? –
@PaulSpiegel - Danke. Ich tat es und nein, tut es nicht. Es sieht so aus, als ob die Abfrage wie erwartet funktioniert. Mein Fehler. Die Verwendung von MAX (id) war nie ideal. Ich brauche die Abfrage, um die neueste ID basierend auf date_active zurückzugeben. Dies ist jedoch nicht unbedingt die MAX (ID), aber es könnte keine Möglichkeit gefunden werden, das gewünschte Ergebnis zu erzielen. –