Mailinglisten-Archive |
Schmuck, Michael schrieb: Thema verfehlt! bitte das nächste mal: dbs at phpbar.de mysql-de at lists.mysql.com mysql-de at lists.4t2.com aber trotzdem: > ich habe ein kleines Problem mit einem SQL Join wo ich nicht so richtig weiter komme. > > Ich habe diese 3 Tabellen: > > 1. Fahrzeuge: ID, Kennzeichen, Typ ... > 2. Firma: ID, Name, Adresse ... > > 3. firma_has_fzg: idFZG, idFIRMA, Zugehörig seit (datum) > > > Das ganze habe ich jetzt erstmal nur ein wenig Vereinfacht, da der gesamte Join über knapp 6 oder 7 Tabellen geht. Mein Problem ist nun folgendes: Wie bekomme ich zu dem Fahrzeug die aktuell zugewiesene Firma? > > > SELECT > fzg.id, > fzg.kennzeichen, > firma.name > FROM > fzg > LEFT JOIN firma_has_fzg ON firma_has_fzg.idfzg = fzg.id > WHERE > firma.id = 123 > > > Soweit so gut, nur bekomme ich nun nicht nur die Autos raus die diese Firma aktuell hat, sondern auch die sie mal hatte. Wie kann ich das mit nur einer Query auf die Datenbank lösen? wie lässt sich denn überhaupt feststellen ob der Eintrag aktuell ist ? fehlt da nicht ein Feld 'Zugehörig bis (datum)' ? oder geht das nur danach wenn keine aktuelleres 'Zugehörig seit (datum)' für dieses Fahrzeug existiert? ... FROM fzg LEFT JOIN firma_has_fzg ON firma_has_fzg.idfzg = fzg.id LEFT JOIN firma_has_fzg AS t2 ON fzg.id = t2.id AND t2.'Zugehörig seit (datum)' > firma_has_fzg.'Zugehörig seit (datum)' WHERE firma.id = 123 HAVING ISNULL( t2.id ) ... oder so ähnlich, habs nicht probiert -- Sebastian Mendel www.sebastianmendel.de www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive