Mailinglisten-Archive |
hallo,
leider kann ich das komplette statement nicht bauen, da die anderen
tabellen fehlen. ich nehme an, das hier ist die tng_people. meiner
meinung nach solltest du diese tabelle einfach doppelt rein joinen:
LEFT JOIN tng_people AS wExclude ON (f.wife=w.personID AND f.gedcom=w.gedcom AND et.tag="EVEN" AND description="Ehename")
INNER JOIN tng_people AS wInclude ON (f.wife=w.personID AND f.gedcom=w.gedcom AND (
( et.tag IS NOT NULL AND description<>"Ehename" )
AND !( et.tag="EVEN" AND description="Ehename" ) /* überflüssig, aber sicher ist sicher ;) */
)
)
da bei dem ersten join die richtigen zeilen NULL haben, setzt du eine
condition hinten dran:
WHERE
wExclude.personID IS NULL
wenn du nun jede person nur einmal haben willst, sagst du am ende:
GROUP BY wInclude.personID
ansonsten bekommst du auch die mehrmals, die in deiner zweiten condition
(das inner join) mehrmals auftauchen.
subselects solltest du vermeiden, da die immer langsam sind.
währenddessen filtern conditionen in inner joins das resultset schon gut
vor und geben dem where wenig zu tun. nicht zu vergessen, daß die
filterfelder in den joins indiziert sein müssen :)
beste grüße,
andi
--
Andreas Balke // Lead Developer
Digiden GmbH • Agentur für Kommunikationslösungen
In der Backfabrik • Saarbrückerstraße 37b • D-10405 Berlin
Fon: +49 (30) 446 749 425 • Fax: +49 (30) 446 749 479
www.digiden.de
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : smime.p7s
Dateityp : application/x-pkcs7-signature
Dateigröße : 3236 bytes
Beschreibung: S/MIME Cryptographic Signature
URL : http://lists.mushaake.org/pipermail/mysql-de/attachments/20070522/213f88c9/attachment.bin
-------------- nächster Teil --------------
_______________________________________________
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