MySQL - Select Abfrage auf "Stammdatentabelle"

dokjr

Grünschnabel
Hallo,

ich stehe vor folgendem Problem:
Ich habe eine Tabelle "Auftrag", diese enthält unteranderem die beiden Spalten "ErstAbtID" (ID der Abteilung des Auftragssteller) und "BearbAbtID" (ID der Abteilung die den Auftrag aktuell bearbeitet). Alle Abteilungen des Hauses sind in einer Stammdatentabelle "Stamm_Abteilungen" hinterlegt. Ich möchte nun die Auftragstabelle abfragen und den Namen der jeweiligen Abteilungen aus der Stammdatentabelle mit angezeigt bekommen. Zum Beispiel würde ich das bei der erstellenden Abteilung wie folgt machen :


Code:
SELECT * FROM Auftrag, Stamm_Abteilungen WHERE Auftrag.ErstAbtID = Stamm_Abteilungen.AbteilungID

Diese Abfrage liefert mir jetzt die erstellende Abteilung, wie komme ich nun zusätzlich an die bearbeitende Abteilung, in der gleichen Abfrage? Das müsste doch irgendwie in einer Abfrage funktionieren, oder?

Ich stehe auf dem Schlauch !

Vielen Dank...


Gruß dokjr
 
Nimm die BearbAbtID in die where clause mit auf?

Außerdem selektier dir nur die Daten aus den Tabellen die du brauchst und nicht alle mit *. Das erhöht die Perfomance.

WHERE Auftrag.ErstAbtID = Stamm_Abteilungen.AbteilungID
AND Auftrag.BearbAbtID = Stamm_Abteilungen.AbteilungID
 
Hi Andi,

danke für deine schnelle Antwort. Im echten Code habe ich meine Abfrage auf die benötigten Spalten beschränkt. Für den Forumsbeitrag wollte ich nur ein vereinfachtes Beispiel nehmen.

Ich versuche die Problematik an folgedem Beispiel zu erklären :

Tabelle 1, Stammdatentabelle der Abteilungen
Stamm_Abteilung
ID Abteilungsname
1 | Technik
2 | EDV
3 | Hauswirtschaft
4 | Empfang

Tabelle 2, Tabelle mit den Aufträgen
Auftrag
ID Auftragstext ErstAbt BerabAbt
1 | Testauftr.A | 1 | 2
2 | Testauftr.B | 3 | 1
3 | Testauftr.C | 4 | 1
4 | Testauftr.D | 4 | 2

Ich möchte nun mit einer Abfrage folgendes Ergebnis erhalten :

Auftragstext Spalte?(erstellende Abteilung) Spalte?(bearbeitende Abteilung)
Testauftr.A | Technik | EDV
Testauftr.B | Hauswirtschaft | Technik
Testauftr.C | Empfang | Technik
Testauftr.D | Empfang | EDV



In deinem Lösungsansatz sehe ich leider zwei Probleme.

WHERE Auftrag.ErstAbtID = Stamm_Abteilungen.AbteilungID
AND Auftrag.BearbAbtID = Stamm_Abteilungen.AbteilungID

Mit dieser Abfrage erhalte ich nur Einträge, in denen erstellende und berabeitende Abteilung gleich sind. Das zweite Problem sehe ich darin, sollten alle Bedingungen wahr sein, erhalte ich nur eine Spalte mit dem Abteilungsname und welche ist das nun, die Erstellende oder die Bearbeitende.

Ich hoffe das ich mit meinem obigen Beispiel die Problematik besser erläutern konnte.

Gruß
Jens
 
So sollte das funktionieren:
Code:
SELECT
a.ID, a.Auftragstext, 
b.Abteilungsname AS Erst, 
c.Abteilungsname AS Berab 
FROM
Auftrag a, Stamm_Abteilung b, Stamm_Abteilung c
WHERE 
a.ErstAbt = b.ID AND a.BerabAbt = c.ID
 
Zurück