phpbar.de logo

Mailinglisten-Archive

verwickelte SQL-Abfrage mit JOIN's

verwickelte SQL-Abfrage mit JOIN's

Rico Koerner rico at netbreaker.de
Die Mai 22 08:36:59 CEST 2007


Sebastian Mendel schrieb:
> Ulrich Kretschmer schrieb:
>> Hallo zusammen,
>>
>> die folgende Abfrage
>>
>> SELECT familyID, w.personID, w.lastname, w.firstname, et.tag, et.description, 
>> e.info FROM tng_families AS f 
>> INNER JOIN tng_people AS w ON (f.wife=w.personID AND f.gedcom=w.gedcom) 
>> LEFT JOIN tng_events AS e ON (w.personID=e.persfamID AND w.gedcom=e.gedcom)
>> LEFT JOIN tng_eventtypes AS et ON e.eventtypeID=et.eventtypeID;
>>
>> verbindet die Tabellen 
>> 	tng_eventypes -> tng_events -> tng_people -> tng_families 
>> und soll so modifiziert werden, daß alle Personen geliefert werden, die das 
>> "event" Ehename *nicht* zugeordnet haben und ansonsten entweder gar keine 
>> "events" haben (et.tag=NULL) oder auch irgendwelche anderen 
>> (description<>"Ehename").
> 
> ich glaub ich hab null verstanden was du willst, vielleciht liegt es ander
> Uhrzeit ...
> 
> aber probier doch mla sowas wie
> 
> ...
> LEFT JOIN
>        tng_eventtypes AS et
> ON     e.eventtypeID = et.eventtypeID
> AND    et.tag = NULL
> AND    et.description = 'Ehename';

Selektierende Parameter sollten nicht im JOIN sondern bei WHERE stehen, also

WHERE et.tag IS NULL OR ...

vor allem auch OR, nicht AND denn es soll ja auch Datensätze liefern in
denen et.tag NOT NULL ist dafür aber et.description != 'Ehename'

Allerdings weiß ich nicht, wie man letzteres rausfiltert. Als Ansatz hab
ich noch GROUP BY gesehen, aber es ist nicht garantiert, daß der DS mit
'Ehename' der letzte ist.

Ich frage mich aber gerade ob die Tabellen ausreichend normalisiert
sind. Oder waren die Beispielzeilen schon die Ausgabe?

Gruß
Rico
_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive