Mailinglisten-Archive |
Moin, > also Daten aus a, a2b und b immer dann wenn ab2.flag 1 ist oder gar > nicht > da.... > select * > from a > left join a2b on a.id=a2b.a_id > left join b on a2b.b_id=b.id > where a2b.flag='1' or a2b.flag is null > GROUP BY A.id > ORDER BY A.display_date DESC > > Liefert Dir erst mal die Daten bei das Flag haben oder gar keinen > Eintrag in > der m:n > Mit dem Gruppieren und aggregieren musst du vorsichtig sein. Kommt > es "nur" > darauf an, das das Flag bekannt ist, kannst du mit max(flag) daran > gehen. > Brauchst Du genau die Daten mit dem Flag, auch wenn es andere gibt, > wirst Du > um selber auseinandernehmen nicht kommen, da Du beim aggregieren > Funktionen > angibst, aber nicht bestimmte Datensätze. Der zweite ist der Fall welcher: Ich benötige immer die Daten aus a, wenn das Flag gesetzt ist, dann auch die entsprechenden Daten aus b. max(flag) zieht mir also nur die möglicherweise vorhandene 1, aber nicht zwingend die zum Datensatz passenden anderen Daten aus b (zählte zu den vorher schon probierten Lösungen). Die gestern von Manuel und Sascha empfohlene Lösung trafen deswegen genau den Kern! Funzt prima! >> Es macht allerdings keinen Unterschied ob die Bedingung WHERE >> steht oder >> im JOIN. Lediglich dass so eine Bedingung nicht ins JOIN sollte, weil >> sich die gesteigerte Übersicht, die ein JOIN erreicht in dem es deine >> Suchparamater von einfachen Verknüpfungen trennt zunichte macht. >> >> > > Bei diesem Fall möglicherweise nicht, aber es kann sehr wohl einen > Unterschied machen, bei mir war es im Zusammenhang mit einem LEFT > JOIN. Deswegen tut's die Lösung mit der Bedingung im WHERE tatsächlich nicht, denn die schmeißt mir bloß dann Ergebnisse, wenn es eben passende Einträge in a2b gibt, sonst bekomm ich auch keine Ergebnisse aus b, hätte mir den LEFT JOIN also sparen können. Die Nummer mit den Bedingungen im JOIN zieht mir halt vor einer Gruppierung die passenden Tupel in die Gruppierungen, kannte ich bloß vorher nicht. Wieder wat gelernt :) Dank und Gruß noch mal an euch, jens.
php::bar PHP Wiki - Listenarchive