Hallo,
ich habe zwei Tabellen mit folgenden Feldern.
Fach:
Fach, Dozent1, Dozent2, Dozent3, Dozent4
Dozenten:
ID, Name
Die Felder Dozent1 - Dozent4 aus Tabelle Fach referenzieren auf die ID von der Tabelle Dozenten.
Ich möchte quasi ein "SELECT * FROM Fach" machen, wobei ich einen Ergebnissatz bekomme, in welchem aber statt Dozent1 - Dozent4 die Namen der Dozenten drinne stehen aus der Tabelle Dozent.
Wie mache ich das?
Gruß,
Jürgen
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Übrigens, natürlich ist Fach eindeutig und es soll nach Fach selektiert werden: also dann quasi "SELECT * FROM Fach where fach="Mathe"". Nur eben anstatt die Dozent1 etc. soll der Name von der Tabelle Dozent eingefügt werden.
Gruß,
Jürgen
Hallo Jürgen,
ich würde das spontan mit JOIN machen...
Tipp: Einmal JOIN reicht hier nicht, was die Sache aber nut syntaktisch etwas unübersichtlicher macht ;-)
Gruß
Borlander
Hi,
Wenn ich es richtig verstanden habe, probier mal dies:
Select Name, ID From Dozenten Inner Join Fach on Dozenten.ID=Fach.ID
Dafür muss aber die Tabelle Fach auch die Splate ID haben!
Ohne Gewähr
Vielleicht noch bei Select Fach.Fach inzuschreiben?
Wie gesagt keine Ahnung ob es was bringt...
Hi
Schon rausgefunden? Ansonsten probier mal das:
SELECT F.fach
, D1.name
, D2.name
, D3.name
, D4.name
FROM
(
(
(
fach AS F
JOIN dozent1 AS D1
ON F.dozent1 = D1.id
)
JOIN dozent2 AS D2
ON F.dozent2 = D2.id
)
JOIN dozent3 AS D3
ON F.dozent3 = D3.id
)
JOIN dozent4 AS D4
ON F.dozent4 = D4.id
;
Je nach RDBMS kannst oder musst du 'AS' weglassen.
Wie Borlander bereits gesagt hat: Ein Join reicht nicht aus ...
Gruss, d-oli
Hallo,
danke euch allen. Hab es jetzt. :-)
d-oli's Vorschlag hat mir den entscheidenden Schupps gegeben.
So sieht es jetzt aus:
select fach, p1.name dz1, p2.name dz2, p3.name dz3, p4.name dz4
from fach f LEFT JOIN dozent p1 ON f.dozent1 = p1.id
LEFT JOIN dozent p2 ON f.dozent2 = p2.id
LEFT JOIN dozent p3 ON f.dozent3 = p3.id
LEFT JOIN dozent p4 ON f.dozent4 = p4.id
where f.fach = 'mathe'
Danke nochmals.
Gruß,
Jürgen