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
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
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