Mailinglisten-Archive |
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"). Einige Beispiele bzw. Fallunterscheidungen zur Verdeutlichung: +----------+----------+----------+----------------------+------+-------------+--------------+ | familyID | personID | lastname | firstname | tag | description | info | +----------+----------+----------+----------------------+------+-------------+--------------+ | F11342 | I4917 | Meyer | | NULL | NULL ^ hat gar keine Ereignisse (et.tag=NULL) zugeordnet => solche Zeilen sollen geliefert werden | F13983 | I34643 | Meyer | Auguste Rosine | EVEN | Rufname | Rosine | | F13983 | I34643 | Meyer | Auguste Rosine | EVEN | Ehename | Müller | ^ hat bereits ein Ereignis Ehename zugeordnet (et.tag="EVEN" AND description="Ehename") => zu einer solchen Person sollen keine Zeilen geliefert werden | F13306 | I32755 | Meyer | Gisela Luise | OCCU | | einBeruf | | F13306 | I32755 | Meyer | Gisela Luise | EVEN | Rufname | Gisela | ^ hat irgendwelche anderen Ereignisse zugeordnet (et.tag<>NULL), aber keinen Ehenamen => diese Zeilen sollen geliefert werden (wobei es an sich genügen würde, pro Person (personID) nur eine Zeile zu liefern). Mit so einer Abfrage steh ich auf dem Schlauch... vor allem mit dem zweiten und dritten Fall - zu einer Person kann es "n" events geben, aber erst beim letzten weiß man, ob nicht doch ein Ehename dabeigewesen ist, sodaß die vorhergehenden Zeilen eigentlich gar nicht interessiert haben. Ich habe die grobe Vorstellung, daß man die ganze Abfrage irgendwie (?) verdoppeln muß, um zu jeder Zeile (w.personID) nochmals eine Spalte mit entweder et.description="Ehename" oder NULL zu haben, wonach man dann alle Zeilen mit "Ehename" in dieser zusätzlichen Spalte unterdrückt und der gewünschte Rest übrig bleibt. Aber wie kriege ich diese zusätzliche Spalte hin? Oder vielleicht geht es ja ganz anders und viel einfacher... Mit Dank im Voraus Ulrich _______________________________________________ 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