Hi
Das Ergebnis soll alle Namen enthalten, wo Urlaub != current_date ist
und wo Raum != '1.Dienst' usw. Aber: Da man selten nur einen Tag Urlaub
nimmt, sind mehrere Daten (Datums) in der Tabelle vorhanden (entsprechend
lang ist natürlich die Liste). Mit der vorgegangenen Syntax werden auch
die Namen ausgegeben, die am current_date urlaub haben, wenn sie
irgendwann anders Urlaub genommen haben.
Was ich also bräuchte währe theoretisch ein select auf urlaub, das den
namen zurück gibt und das datum des current_date, wenn er vorhanden ist.
Dieses select muß mit der tabelle namen gejoint werden und darauf ein
select wo nur die namen angezeigt werden, an denen urlaubdatum nicht
current_date ist.
Nach dem dritten durchlesen dann schon. Das hatte ich völlig übersehen.
Was jetzt folgt, ist eine Lösung, die funktionieren sollte (ich kanns hier
nicht testen), aber hässlich ist und auch nicht empfohlen.
http://www.mysql.com/doc/J/O/JOIN.html
Nur, die einzige andere Lösung die du hast, sind SubQueries oder komplizierte
Zwischentabellendinger, und die sind auch nicht als schön zu bezeichnen.
select *
from namen
left join aerzte
on (namen.name = aerzte.arzt)
left join urlaub
on (urlaub.urlaubname = namen.name
and urlaub != current_date
and (Raum != '1.Dienst' or Raum != '2.Dienst' or Raum != 'FOÄ'))
Wie gesagt, ungetestet, wenns nicht funktioniert, bitte posten
dann kann ichs heute abend genauer anschauen mit mehr Zeit und
Literatur.
Gruss Daniela