Mailinglisten-Archive |
Moin Liste, ich weiß, ich weiß: das gehört hier nicht hin, bitte nicht zu sehr meckern. Ich kenne leider keine entsprechende SQL-Liste und es eilt ein wenig. Vielleicht kann hier jemand einen weiterbringenden Hinweis geben. Folgendes Problem: Ich habe zwei Tabellen A, B, die über eine dritte A2B in einer m:n- Relation verknüpft sind. A enthält Texte, B Bilder. Den Texten A können Bilder zugeordnet sein, müssen aber nicht. A2B enthält für bestimmte Zuordnungen noch ein Flag (0/1), das diesem Bild dann bestimmte Eigenschaften bzgl. des Textes zuweist. Ich benötige nun alle Texte und, so vorhanden, das Bild, dessen Flag eine 1 hat. Das ganze nach einem Datum geordnet. Der Query sieht stark vereinfacht zunächst so aus: SELECT * FROM A LEFT JOIN A2B ON A.id = A2B.a_id GROUP BY A.id ORDER BY A.display_date DESC Die GROUP BY Anweisung soll natürlich dafür sorgen, dass jeder Text nur ein mal ausgegeben wird. Das Dumme ist, dass hierbei gerne auch Tupel überbleiben, deren Flag 0 ist, obwohl es zu diesem Text auch welche gibt, die eine 1 haben (es steht ja auch bis jetzt nicht drin, dass das anders sein soll). Ergebnis ohne GROUP BY und HAVING z.B: id_a1, Text_a1, id_b1, flag_b_0 <- der kommt zB. in die Gruppe id_a1, Text_a1, id_b2, flag_b_1 <- den will ich aber haben!! id_a1, Text_a1, id_b3, flag_b_0 id_a2, Text_a2, NULL, NULL <- den natürlich auch id_a3, Text_a3, id_bx, flag_b_1 <- den auch Eigentlich sollte HAVING flag = '1' nach GROUP BY helfen (Flag ist vom Typ enum, deswegen die Hochkommata), dachte ich, dann gibts aber ein leeres Ergebnis. Für weiterhelfende Tipps dankbar ist: Jens. :) Schön' Tach!
php::bar PHP Wiki - Listenarchive