Mailinglisten-Archive |
>Bloß: wie kann man MySQL ein anderes Verhalten 'beibringen'? Ich will >ja gerade nicht, daß es aufhört. >Gruß von der Ostsee Hi Hanjo, Nochmals zum Verständnis: ... from LinkList Left Join LinkExcl ON ... MySQL holt die Tabelle LinkList ... LinkList.id_nr = LinkExcl.id_nr ... Jede id_nr in LinkList wird mit jeder gleichen id_nr von LinkExcl verknüpft. Gibts in LinkExcl keine mit LinkList übereinstimmende id_nr wird ein leerer Datensatz angehängt. Soweit ist hoffentlich alles klar..?? Jetzt gibts da noch Datensätze, dessen id_nr zwar in LinkExcl drinstehen, nicht aber in LinkList. Diese werden bei diesem LEFT JOIN !!! nicht !!! angezeigt. Sowas wird auch referenzielle Integritätsverletzung genannt. Warum?? Eine Beziehung sollte nur in einer Richtung erfolgen d.h. Haupttabelle -> Untertabelle 1:1 oder 1:n Jetzt kommen wir mal zu deinem where: where (LinkList.Bereich = "Lichtbote" or LinkList.Bereich = "LB-Sued" or LinkList.Bereich = "ALL") and (NOT LinkExcl.Bereich = "LB-Sued" || LinkExcl.Bereich IS NULL ) wichtig in diesem Zusammenhang ist: (NOT LinkExcl.Bereich = "LB-Sued" || LinkExcl.Bereich IS NULL ) Was machst du da???? Du vergleichst logisch "oder" LinkExcl.Bereich = "LB-Sued" mit LinkExcl.Bereich IS NULL ... Das Ergebis ist immer falsch dann NOT: Dein Ergebnis ist immer 1 d.h. true da LinkExcl.Bereich !! nie !! NULL ist... Deshalb ist es völlig Wurscht oder Käse was du in LinkExcl.Bereich reinschreibst... Tja... Ändere mal das ganze so: ((NOT LinkExcl.Bereich = "LB-Sued") OR LinkExcl.Bereich IS NULL ) Da kann der Join aber nix dafür ;-) MfG Wolfgang -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive