Frage von ananas89, 18

SQL Befehl bei Abfrage mit 3 Tabellen?

Hallo, da es leider schon etwas her ist, dass ich mich mit SQL im Studium beschäftigt habe, wollte ich fragen wie ich einen SQL Befehl schreibe wenn ich mit aus 3 Tabellen bestimme Daten ziehen möchte.

Tabelle 1 

Felder - 

P_ID, Primärschlüssel, Personalnummer - 

P_Titel_ID Fremdschlüssel, ID aus Tabelle 3 - 

P_Name Name der Person

Tabelle 2 

Felder - 

V_ID Primärschlüssel Eindeutige Vertragsnummer - 

V_Person_ID Fremdschlüssel ID aus Tabelle 1 - 

V_Beginn Datum Vertragsbeginn - 

V_Ende Datum Vertragsende

Tabelle 3

T_ID Primärschlüssel Eindeutige ID des Titels -

 T_Titel Titel

Ich benötige einen SQL Befehl um alle Personen anzuzeigen, die am 01.08.2016 einen gültigen Vertrag haben. Die Liste soll Personalnummer, Namen der Person, Titel, Vertragsbeginn und Ende des Vertrages aufführen.

Antwort
von MaximusD, 10

So auf die Schnelle schlage ich folgendes vor:

select Tabelle1.P_ID, Tabelle1.P_Name, Tabelle3.T_Titel, Tabelle2.V_Beginn, Tabelle2.V_Ende
from Tabelle1
inner join Tabelle2
on Tabelle1.P_ID=Tabelle2.V_Person_ID
inner join Tabelle3
on Tabelle1.P_ID=Tabelle3.T_ID
where Tabelle2.V_Beginn <= '01.08.2016'and Tabelle2.V_Ende >= '01.08.2016';

Schau mal ob das geht - falls ich die Tabellennamen richtig geschrieben hab.



Antwort
von ETechnikerfx, 9

select P_ID, P_Name, T_Titel, V_Beginn, V_Ende

from tabelle1 a

inner join tabelle2 b on a.P_ID = b.V_Person_ID

inner join tabelle3 c on a.P_Titel_ID = c.T_ID

where V_Beginn <= '01.08.2016' and V_Ende > '01.08.2016'


Hierbei ist jedoch kan Vergleich auf NULL möglich (zumindest im Vertragsende könnte ein NULL vorkommen. Wenn dies abgefangen werden soll musst du folgendes für V_Ende in der Where-Klausel einsetzen: isnull(V_Ende,'0') > '01.08.2016'

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten