MYSQL-Abfrage liefert nur einen Wert? (JOIN ueber 2 Tabellen plus ID 0)

Caralynn

Mitglied
Hallo und ein frohes Neues Jahr an alle,

zum neuen Jahr habe ich mir vorgenommen, wieder mehr zu basteln. Und prompt stehe ich vor dem ersten groeßeren Problem.

Aufbau:
2 Tabellen:

pet mit pet_name, id, owner (=Userid) und gid
group mit groupName, gid und groupOrder

Jedes Tier kann exakt einer Gruppe zugewiesen werden. Wenn es keiner Gruppe zugewiesen ist, steht 0 in der Spalte gid.

Folgender Code liefert jedoch nur einen Datensatz zurueck (den ersten):

Code:
SELECT pet.pet_name AS pet_name, pet.id AS id, group.groupName AS groupName
FROM pet
LEFT JOIN group ON ( pet.gid = group.gid )
WHERE owner =1
GROUP BY group.gid
ORDER BY group.groupOrder DESC

Das Ziel ist es jedoch, alle Tiere des Users geordnet nach Gruppen - und die ohne Gruppe! - auszugeben; zuerst die ohne Gruppe, dann nach Gruppenreihenfolge... ist das so ueberhaupt moeglich oder muss ich ggf. fuer "Keine Gruppe" eine Gruppe anlegen? :confused:
... das war mein Gedanke... aber geht es nicht auch so?



Grueße,
Cara
 
item:Alle Felder des SELECT die keine Guppierungsfunktion (COUNT, SUM etc) haben müssen in den GROUP BY bereich. MySQL ist zwar so freundich meistens diesen Fehler selber auszubügeln - aber man soll sich das nicht angewöhnen.

Item: Warum machst du ein GROUP BY auf die Gruppe wenn du die Details sehen willst? Weg damit.

Nachtrag:
item: Du musst für 0 keine Gruppe anlegen. Du verbindest mit LEFT JOIN. Daher wird bei der Gruppe 0 das Feld groupName leer sein
 
Hallo,

danke fuer die prompte Antwort, die mich auch in die richtige Richtung geschubst hat. Das mit den GROUP BY war mir neu, leider mache ich viel zu selten was in die Richtung, als das ich so Feinheiten kennenlerne...

Kaum ist das GROUP BY weg, werden wieder alle Tiere ermittelt - evtl. wieder zu "komplex" gedacht (in verschachtelten Arrays)... danke!


Grueße,
Cara
 

Neue Beiträge

Zurück