phpbar.de logo

Mailinglisten-Archive

?? Hilfe zumVerständis von LEFT JOIN

?? Hilfe zumVerständis von LEFT JOIN

Hans-Joachim Grüßner hanjo.gruessner at t-online.de
Die Jul 15 16:48:38 CEST 2003


Moin auch,

wie genau wirkt eigentlich LEFT JOIN ?
Wie kommt es, daß es 'Datensätze ausläßt' ?
Und wie kann man das verhindern ?

Hintergrund:

Ich habe 2 Tabellen, in der ersten (LinkList) stehen - mit primary key 
'id_nr' Links für mehrere Websites.
In der 2. (LinkExcl) stehen - verknüpft mit id_nr - WebSite-Bereiche, 
bei denen der verknüfte Linnk ausgeschlossen sein soll.
(Ich möchte Daten aus einer Tabelle für mehrere Website nutze, der 
einzelnen WebSite aber die möglichkeit der individuellen Gestaltung bieten.)

Mit folgendem Statement erreiche ich es, daß für eine WebSeite (hier 
LB-Sued genannt) das richtige Ergebnis kommt:

Select LinkList.Bereich, Kategorie, LinkTitel, LinkPfad, Eingegeben, 
LinkList.id_nr from LinkList Left Join LinkExcl ON LinkList.id_nr = 
LinkExcl.id_nr
where (LinkList.Bereich = "Lichtbote" or LinkList.Bereich = "LB-Sued" or 
LinkList.Bereich = "ALL") and (NOT LinkExcl.Bereich =
"LB-Sued" || LinkExcl.Bereich IS NULL )  order by Kategorie, Eingegeben desc

Jetzt ändere ich das Statement für eine andere Website so ab:
Select LinkList.Bereich, Kategorie, LinkTitel, LinkPfad, Eingegeben, 
LinkList.id_nr from LinkList Left Join LinkExcl ON LinkList.id_nr = 
LinkExcl.id_nr
where (LinkList.Bereich = "Lichtbote" or LinkList.Bereich = "LB-Sued" or 
LinkList.Bereich = "ALL") and (NOT LinkExcl.Bereich = "Lichtbote" || 
LinkExcl.Bereich IS NULL )  order by Kategorie, Eingegeben desc

also nur ..(NOT LinkExcl.Bereich = "Lichtbote".. geändert.

Es kommen als Ergebnis die gleichen Datensätze raus wie beim ersten 
Statement. (Hinweis: in LinkExcl ist mindestgens ein Datensatz für 
'Lichtbote' vorhanden).

Nach etlichem Try and Error setze ich schließlich
..(NOT LinkExcl.Bereich = "Scheisse"..

Resultat wie oben.
Es scheint also, daß es MySQL egal ist, was da steht.

Wie das?

Und was muß ich tun, um mein gewünschtes Ergebnis zu erhalten, also alle 
Datensätze aus LinkList, die der Bedingung
where (LinkList.Bereich = "Lichtbote" or LinkList.Bereich = "LB-Sued" or 
LinkList.Bereich = "ALL")
gehorchen UND NICHT als Bereich in LinkExcl stehen.

TIA

Hanjo



-- 
Software & Seminar-Kontor                      Hans-Joachim Grüßner
Glasholz                                       D-24369 Waabs
Fon +49 4352 91 25 95                          Fax +49 4352 91 25 97
e-mail mailto:hanjo at gruessner.de	       http://www.gruessner.de





-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive