GROUP BY - steh ich so auf der Leitung?
Verfasst: 25.06.2004 23:47
Ich steh hier gerade von einem Problem bei DB Maintenance: eine Funktion gibt mir einen Wert zurück, obwohl sie eigentlich keinen zurückgeben sollte. Hier die Funktion:
Habe da nun etwas rumgespielt und festgestellt, dass diese Funktion hier:hingegen einwandfrei funktioniert. Der einzige Unterschied ist der erste Teil des HAVING-Teils.
Ich stehe derzeit gerade gewaltig auf dem Schlauch, wieso dieser Fehler auftritt. Hat da jemand eine Idee?
Hier noch das Ergebnis der ersten Query:Es exisitiert in der phpbb_users ein Datensatz mit der ID -1 (der Gast-Account), für den dann genau ein Datensatz in der phpbb_user_group und einer in der phpbb_groups (mit group_single_user = 1) existiert.
Gruß, Philipp
Code: Alles auswählen
SELECT u.user_id, Sum( g.group_single_user ) AS group_count
FROM phpbb_users u
LEFT JOIN phpbb_user_group ug ON u.user_id = ug.user_id
LEFT JOIN phpbb_groups g ON ug.group_id = g.group_id
GROUP BY u.user_id
HAVING Sum( g.group_single_user ) <> 1 OR IsNull( group_count )
Code: Alles auswählen
SELECT u.user_id, Sum( g.group_single_user ) AS group_count
FROM phpbb_users u
LEFT JOIN phpbb_user_group ug ON u.user_id = ug.user_id
LEFT JOIN phpbb_groups g ON ug.group_id = g.group_id
GROUP BY u.user_id
HAVING group_count <> 1 OR IsNull( group_count )
Ich stehe derzeit gerade gewaltig auf dem Schlauch, wieso dieser Fehler auftritt. Hat da jemand eine Idee?
Hier noch das Ergebnis der ersten Query:
Code: Alles auswählen
user_id | group_count
---------------------
-1 | 1
Gruß, Philipp