Abfrage mitleft Join
am 09.01.2008 10:00:30 von Stephan Dreisbach
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@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@wo.de'
Das liefert mir immer ein Ergebnis, obwohl weder L.Nr noch L.Schulnr
in Abrechnung vorkommt.
Danke für Hinweise.
--
Stephan
Re: Abfrage mitleft Join
am 09.01.2008 16:48:37 von Stephan Dreisbach
Andreas Kretschmer 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 = @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 = @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