MySQL:Select(über mehrere Tabellen)mit einer selbstreferenzierten Tabelle

Davicito

Erfahrenes Mitglied
Ich benötige mal Eure Hilfe zum Thema "Selbstreferenzierte Tabelle"

Ich habe ein kleines Datenbanksystem angelegt in denen Mitarbeiter (Tabelle: Mitarbeiter) mit Kunden (Tabelle: Kunde) und den Kundeneinsatzort (Tabelle: Standort), über eine Beziehungstabelle (Bez_Kunden_Mitarbeiter) in Beziehung gebracht werden.

Datenbankübersicht:
upload_2017-4-20_15-53-19.png

Ich kann nun mit folgendem SELECT mir - gefiltert - die Mitarbeiter anzeigen lassen
SQL:
SELECT
   st.Name as Standort, k.Name as Kunde, m.Name as Mitarbeiter, m.Vorname
FROM
   Mitarbeiter m,
   Bez_Kunden_Mitarbeiter b_km,   
   Standort st,  
   Bez_Kundenstandort b_kst,
   Kunde k    
WHERE  
         m.M_ID = b_km.M_ID
    AND b_km.ST_ID = st.ST_ID
    AND st.ST_ID = b_kst.ST_ID 
    AND b_kst.K_ID = k.K_ID
  
    AND st.ST_ID = 1                    // z.B. nach Standort: Berlin
    AND k.Name = 2                      // z.B. beim Kunden: Versatel
  
GROUP BY mitarbeiter

Nun möchte ich einen Schritt weitergehen und zusätzlich alle Mitarbeiter (der Kunden und Kundenstandorte) an einer zentralen Niederlassung binden und diese mir nach einer Niederlassung filtern.
Dazu habe ich eine zusätzliche Tabelle: Standortgruppe (für Niederlassungen) eingebunden. Dazu soll nun die Standorttabelle (Standort) eine selbstreferenzierte Tabelle darstellen.
Dazu habe ich mir folgenden Ansatz angesehen:
https://books.google.de/books?id=-h...e&q=sql selbstreferenzierende tabelle&f=false

und ein funktionierenden gesonderten SELECT formulert - betreffend nur der Standort- und Standortgruppe-Tabelle
SQL:
SELECT
   st1.Name,
    st2.Name   
FROM
   Standortgruppe stg   
INNER JOIN Standort st1 ON stg.ST_ID = st1.ST_ID   
INNER JOIN Standort st2 ON stg.Gruppen_ID = st2.ST_ID
WHERE   
    st2.ST_ID = 7

Beim Zusammenbauen des obigen Statements mit dem Statement der Selbstreferenzierung, als Sub-Query scheitere ich jedesmal.
Ich benötige etwas Unterstützung von Euch, in dieser Problematik. LG :)
 
Hmmm... interessanter Ansatz. Kannte ich noch nicht ;)
Nur ist das nicht MySQL-Kompatibel. Ich habe da zwar ne Alternative, in die Beziehungstabelle "Bez_Kunden_Mitarbeiter" einen weiteren Standort-Attribute "STNL_ID" einzufügen, finde diese Lösung aber unschön, für eine Relationale Datenbank.

Wäre schön, wenn da noch jemand eine bessere Lösung wüsste, für MySQL, da ich auch heute keinen Schritt weiter gekommen bin. LG :)
 
Zuletzt bearbeitet:
Ich habe mich jetzt doch dazu entschieden, das zweite Attribut "STGruppen_ID" in die Beziehungstabelle (Bez_Kunden_Mitarbeiter) einzufügen und dadurch die Mitabeiter an eine Niederlassung zu binden.

siehe folgenden SQL-Abfrage
SQL:
SELECT
   st.Name AS Kundenstandorte, m.Name AS Mitarbeiter, m.Vorname, k.Name AS Kunde
FROM
   Mitarbeiter m,
   Bez_Kunden_Mitarbeiter bkm,
   Standort st,
   Kunde k,
   Bez_Kundenstandort bkst
 
WHERE
        m.M_ID = bkm.M_ID
    AND bkm.ST_ID = st.ST_ID
    AND st.ST_ID = bkst.ST_ID
    AND bkst.K_ID = k.K_ID
 
    AND k.K_ID = 16
    AND bkm.STGruppen_ID = 7
ORDER BY `Kunde`, `Kundenstandorte` ASC


Beste Grüße,

Davicito
 
Zurück