[mysql] Join mit 2 Werten, IN()?

N

nightcoding

Aktives Mitglied
Thread Starter
Dabei seit
31.03.2008
Beiträge
1.104
Reaktionspunkte
65
Hallo liebe Leute,

ich hab hier gerade ein kleines SQL-Problem und weiß nicht weiter. Ich will folgendes: alle Mitarbeiter, die an Projekt X und Projekt Y beteiligt sind. Eigentlich ja eine simple Sache, dachte ich. So sehen die Tabellen aus (stark vereinfacht):

Mitarbeiter: ID|Name|Personalnummer
Projektbeteiligungen: MitarbeiterID|ProjektID

Ich dachte mir, das müsste mit einem einfachen LEFT JOIN gehen:

SELECT m.ID
FROM Mitarbeiter m
LEFT JOIN Projektbeteiligungen p ON m.ID = p.MitarbeiterID
WHERE p.ProjektID IN(1,2);

Aber das liefert mir auch Mitarbeiter, die entweder nur an Projekt X oder nur an Projekt Y beteiligt sind, ich will aber nur die, die an beiden beteiligt sind.

Vielleicht kann mir ja jemand auf die Sprünge helfen, ich seh im Moment den Wald vor lauter Bäumen nicht!

Danke,
Martin
 
Zuletzt bearbeitet:
Wie wär'S mit:

Code:
SELECT m.ID
FROM Mitarbeiter m
WHERE EXISTS (SELECT p1.ProjektID FROM Projektbeteiligung p1 WHERE p1.MitarbeiterID = m.ID AND p1.ProjektID = 1)
  AND EXISTS (SELECT p2.ProjektID FROM Projektbeteiligung p2 WHERE p2.MitarbeiterID = m.ID AND p2.ProjektID = 2)

Gruß
Dirk
 
  • Gefällt mir
Reaktionen: nightcoding
Hallo Dirk,

ich dachte es würde ohne Unterabfragen gehen, aber geht wohl leider nicht. Danke dir, passt perfekt!

Martin
 
Zurück
Oben Unten