# Select mit join



## ndako (2. Jun 2012)

Hallo,
ich folgende zwei Tabellen:
Tabelle Zeitraum:
ZeitraumId                 von                   bis                        Person
1                       2012-05-01           2012-05-10                  A
2                       2012-09-01           2012-09-10                  A
3                       2012-01-01           2012-01-01                  A
4                       2012-01-01           2012-01-01                  A
5                       2012-10-01           2012-10-10                  B
6                       2012-01-01           2012-01-01                  B
7                       2012-12-21           2012-12-31                  C

Tabelle Person:
Person                  Name
A                         Matze
B                         Lenni
C                         Gerd                

von - bis in der Tabelle Zeitraum ist der Zeitraum, wo die Person im Urlaub ist. Nun zu meiner Problematik:
Ich möchte durch ein Script in MySQL ermitteln, wer an einem bestimmten Tag keinen Urlaub hat. Z.B haben die Personen B und C am 2012-05-06 keinen Urlaub.


----------



## XHelp (2. Jun 2012)

Was hat denn das mit Join zu tun? Um Person an sich rauszufinden, brauchst du ja die andere Tabelle nicht. Es wäre sowas wie

```
SELECT DISTINCT Person From zeitraum WHERE Person NOT IN (SELECT Person FROM zeitraum WHERE von<='2012-05-06' AND bis>='2012-05-06')
```
Wenn du den Namen wissen willst, dann sei dir an dieser Stelle gesagt, dass es unheimlich ungünstig ist, dass du 3 mal "Person" hat, sowohl als Tabellenname als auch als Spaltenname. Aber im Grunde könnte es wie folgt aussehen:

```
SELECT DISTINCT Name FROM zeitraum INNER JOIN Person ON zeitraum.Person=Person.Person WHERE zeitraum.Person NOT IN (SELECT Person FROM zeitraum WHERE von<='2012-05-06' AND bis>='2012-05-06')
```


----------



## Gast2 (2. Jun 2012)

Hast du eine Frage? Weißt du nicht wie du die Tabelle Person an Zeitraum joinst?


----------



## ndako (2. Jun 2012)

Danke dir 'XHelp' für deine Antwort! 
Ich habe aus deiner Antwort meine Lösung hergeleitet. Zur Info:
Die Tabelle 'Zeitraum' enthält nur den Foreign-Key zur Person. Damit kann ich zu einer Person mehrere Zeiträume erfassen.
Es ist nicht so, dass ich den Namen 'Person' sowohl als Tabellennamen, als auch als Spaltennamen verwendet habe. Es war nur zur Verdeutlichung meines Problems.
Aber danke nochmals!


----------

