Hallo,
Aber auch wenn ich die Abfrage dann so formuliere...
SELECT a. * , b.vorname, b.name, b.verantwortlich, c.bezeichnung, c.farbe
^Diese Lücke ist immer noch falsch.
FROM (
urlaubdaten AS a
^Aus dieser Tabelle werden alle Datensätze genommen.
LEFT JOIN telefon AS b ON a.personalnummer = b.personalnummer
^Was ist plötzlich telefon? Wo sind die Mitarbeiter geblieben?
)
LEFT JOIN urlaubarten AS c ON a.artnr = c.artnr
WHERE (
a.personalnummer IS NULL OR (
^Das wird wahrscheinlich nie zutreffen, weil aus a ohnehin alle Datensätze genommen werden.
a.urlaubvon
LIKE '2004-%' OR a.urlaubbis
LIKE '2004-%'
)
) AND b.firma = 'Firma GmbH' AND b.abteilung = 'Einkauf'
ORDER BY a.personalnummer, a.urlaubvon... erscheint bei mir nur der einer Satz, der in Urlaubdaten vorhanden ist.
Das ist wieder logisch, weil die Tabelle urlaubarten im LEFT JOIN ganz links steht.
Vergleichst Du mal bitte diese Abfrage mit der von Dir im Ausgangsposting vorgestellten:
SELECT a. * , b.vorname, b.name, b.verantwortlich, c.bezeichnung, c.farbe
FROM (
mitarbeiter AS b
LEFT JOIN urlaubdaten AS a ON a.personalnummer = b.personalnummer
)
LEFT JOIN urlaubarten AS c ON a.artnr = c.artnr
WHERE (
a.urlaubvon
LIKE '2004-%' OR a.urlaubbis
LIKE '2004-%'
) AND b.firma = 'Firma GmbH' AND b.abteilung = 'Einkauf'
ORDER BY a.personalnummer, a.urlaubvon
und sagst mir dann, ob Du mich veralbern willst?
viele Grüße
Axel