phpbar.de logo

Mailinglisten-Archive

[php] [OT] dringend SQL-Könner gesucht

[php] [OT] dringend SQL-Könner gesucht

js at neuestun.de js at neuestun.de
Mit Feb 27 10:53:44 CET 2008


Moin Yannik,

Wieso sollte es nicht hierhin gehören? Ist doch ein typisches problem
beim bei php-Anwendungen :-).

das ist sicher so, aber grundsätzlich doch eher kein PHP-Prob. Und da reagiert ja der ein oder andere hier "ein wenig sensibel" ;)


Die Tabelle B kommt jetzt in deinem Query garnicht vor?! Ich baue den
mal so, wie ich es verstanden habe:
SELECT * FROM a
LEFT JOIN a2b ON a.id=a2b.a_id
LEFT JOIN b ON a2b.b_id=b.id
WHERE b.flag=1
GROUP BY a.id
ORDER BY deinDatum

Du hast recht, ich schrieb ja auch "vereinfacht". Der Query sieht im Prinzip eher so aus, immer noch stark vereinfacht. Ich benötige nicht nur die Daten aus a, sondern aus allen drei Tabellen (insgesamt aus noch einigen mehr, das tat aber hier nix zur Sache). Zur Illustration des Problems reichte meine Kurzform.
Deine where-Lösung schmeißt aber eben nur die Texte aus A raus, die auch ein B haben und das auch noch 1 ist. Fällt allso aus.

> 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.
Um Gottes willen... HAVING wird erst nach dem GROUP BY ausgeführt. In
jedem Fall brauchst du ein WHERE, damit deine 0-en schon vor dem GROUB
BY verschwinden. WHERE ist übrigens dadurch auch viel schneller als HAVING.

Das war mir "irgendwie diffus" klar. Sowas kann man ja nachlesen/ hat man ja mal gelernt. Das gehörte nur zu den schon probierten Lösungen (wie auch das where oben), die nicht das erwünschte Ergebnis liefern.

Gruß,
jens.

php::bar PHP Wiki   -   Listenarchive