1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

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

Dieses Thema im Forum "Relationale Datenbanksysteme" wurde erstellt von Davicito, 20. April 2017 um 17:43 Uhr.

  1. Davicito

    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
    Code (SQL):
    1. SELECT
    2.    st.Name AS Standort, k.Name AS Kunde, m.Name AS Mitarbeiter, m.Vorname
    3. FROM
    4.    Mitarbeiter m,
    5.    Bez_Kunden_Mitarbeiter b_km,  
    6.    Standort st,  
    7.    Bez_Kundenstandort b_kst,
    8.    Kunde k    
    9. WHERE  
    10.          m.M_ID = b_km.M_ID
    11.     AND b_km.ST_ID = st.ST_ID
    12.     AND st.ST_ID = b_kst.ST_ID
    13.     AND b_kst.K_ID = k.K_ID
    14.  
    15.     AND st.ST_ID = 1                    // z.B. nach Standort: Berlin
    16.     AND k.Name = 2                      // z.B. beim Kunden: Versatel
    17.  
    18. 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
    Code (SQL):
    1. SELECT
    2.    st1.Name,
    3.     st2.Name  
    4. FROM
    5.    Standortgruppe stg  
    6. INNER JOIN Standort st1 ON stg.ST_ID = st1.ST_ID  
    7. INNER JOIN Standort st2 ON stg.Gruppen_ID = st2.ST_ID
    8. WHERE  
    9.     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 :)
     
  2. Fragenfrager

    Fragenfrager Erfahrenes Mitglied

  3. Davicito

    Davicito Erfahrenes Mitglied

    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 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 :)
     
Die Seite wird geladen...