phpbar.de logo

Mailinglisten-Archive

verwickelte SQL-Abfrage mit JOIN's

verwickelte SQL-Abfrage mit JOIN's

andreas balke a.balke at digiden.de
Die Mai 22 11:35:58 CEST 2007


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