Bauche Hilfe bei LeftJoin mit Bedingung

X-Color

Erfahrenes Mitglied
Hi Leute,

ich möchte via LeftJoin Daten aus 2 Tabellen auslesen. Klappt auch wunderbar, wenn ich die rechte Tabelle nicht noch mit einer Bedingung ergänzen müsste.
Also: Linke Tabelle (datum) soll alle Ergebnisse anzeigen.
Die Rechte Tabelle soll nur dann Ergebnisse verknüpfen, wenn die Bedingung (mitarbeiter_id) erfüllt wird. Ansonsten NULL.

So würde mein Query aussehen, der aber einen InnerJoin nachamt:
PHP:
ELECT DISTINCT `datum`.*, `arbeitstag`.`urlaub`, `arbeitstag`.`krankheit`, `arbeitstag`.`mitarbeiter_id`
FROM `datum`
LEFT JOIN `arbeitstag` ON datum.id = arbeitstag.datum_id
WHERE (datum.id BETWEEN 526 AND 532) AND (arbeitstag.mitarbeiter_id = '12')
Ich erhalte aber nur Ergebnisse die auch mit der rechten Bedingung zutreffen. So wären es z.b. nur 2 Ergebnisse obwohl ich zwischen 526 und 536 ein Datum suche.

Könnt ihr mir helfen?

Gruß Gerrit
 
Hmm mir fällt da jetzt nur ein Subselect an auf welches du dann joinst:
SQL:
SELECT DISTINCT `datum`.*, `arbeitstag`.`urlaub`, `arbeitstag`.`krankheit`, `arbeitstag`.`mitarbeiter_id`
FROM `datum`
LEFT JOIN 
(SELECT * FROM `arbeitstag` WHERE arbeitstag.mitarbeiter_id = '12') as A ON datum.id = A.datum_id
WHERE (datum.id BETWEEN 526 AND 532)

Aber wahrscheinlich gibts noch nen einfacheren Weg ;)
 
Danke für deine Hilfe,

habe ja noch garnicht gewusst das es Methoden wie z.b. ein Subselect gibt. Ich werde es ausprobieren und wenn es tatsächlich noch eine einfachere Methode gibt, kann sie gerne hier gepostet werden :)

Gruß Gerrit
 

Neue Beiträge

Zurück