Abfrage mitleft Join

Hallo,

left Join erschließt sich mir einfach nicht :-( oder ich sehe den
Wald vor lauter Bäumen nicht:

Tabelle Lehrer hat die Spalten Nr, Schulnr, LMail
Tabelle Abrechnung die Spalten Lehrernr, Schulnr und Lizenz

Ich möchte jetzt prüfen, die Mailadresse irgendwer [at] wo.de in der
Tabelle Lehrer vorkommt und wenn ja, ob die zugehörige L.Nr oder
L.Schulnr schon in der Tabelle Abrechnung vorkommt:

select * from Lehrer L
left join Abrechnung AB on
(AB.Lehrernr=L.Nr and AB.Lizenz like 'Klasse') or
(AB.Schulnr=L.Schulnr and AB.Lizenz like 'Schule')
where L.LMail like 'irgendwer [at] wo.de'

Das liefert mir immer ein Ergebnis, obwohl weder L.Nr noch L.Schulnr
in Abrechnung vorkommt.

Danke für Hinweise.

--
Stephan
Stephan Dreisbach [ Mi, 09 Januar 2008 10:00 ] [ ID #1903509 ]

Re: Abfrage mitleft Join

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Andreas Kretschmer [ Mi, 09 Januar 2008 14:22 ] [ ID #1903510 ]

Re: Abfrage mitleft Join

Andreas Kretschmer <akretschmer [at] spamfence.net> schrieb:

>Ich bin mir nicht wirklich sicher, dich korrekt zu verstehen,
>möglicherweise suchst du aber sowas wie:

$frage="select Nr, Schulnr, LMail from Lehrer where
LMail like '$Eingabe'";
$result = [at] mysql_query($frage,$db) or die(mysql_error());
$num = mysql_numrows($result);
# wenn es eine Person gibt mit der Mail $Eingabe,
# siehe nach, ob deren Nr oder Schulnr in Abrechnung
# vorkommt:
if ($num>0) {
$row = mysql_fetch_array($result);
$frage="select * from Abrechnung where
(Schulnr like '$row[Schulnr]' and Lizenz like 'Schule') or
(Lehrernr like '$row[Nr]' and Lizenz like 'Klasse')";
$result = [at] mysql_query($frage,$db) or die(mysql_error());
$num = mysql_numrows($result);
if ($num>0) { echo "erlaubt"; }
else { echo "nicht erlaubt"; }
}

Das funktioniert auch, aber ich denke, da gibt es eleganteres...

--
Stephan
Stephan Dreisbach [ Mi, 09 Januar 2008 16:48 ] [ ID #1903511 ]
Datenbanken » de.comp.datenbanken.mysql » Abfrage mitleft Join

Vorheriges Thema: Probleme mit Umlauten
Nächstes Thema: Baumstruktur mit Zugriffsrechten?