MySQL - Mehrere Fremdschlüsselattribute in einer Tabelle



  • Guten Tag,

    ich versuche nun seid Tagen einen MySQL-Befehl für unser Intranet herauszufinden.
    Es sollen mehrere Fremdschlüsselattribute (5 Stk mit IDs von 1-43) in einer Tabelle, über den PK einer anderen Tabelle mit einem Text versehen werden.

    Wie ist dies möglich? Muss man dafür mehrere JOINs verwenden?

    Lg

    Christoph



  • Das kommt darauf an, welche Daten du haben möchtest. Welche Daten aus welchen Tabellen hättest du denn gern? Müssen Zeilen in den anderen Zellen existieren oder soll aufgefüllt werden?

    -- nimmt alle Zeilen aus main und ergänzt aus t1
    SELECT 
       m.*,
       t1.* 
    FROM 
       main m
       LEFT JOIN table1 t1 ON t1.main_id = m.id
    


  • Also ich erläutere es mal kurz näher.

    Wir sind ein Möbelhersteller und bekommen täglich von Endkunden Anfragen zu Farbmustern, damit diese vor eintreffen der Ware schon z.B. den passenden Teppich aussuchen koennen. Maximal sollen fünf Muster an einen Kunden versendet werden können.

    Zum Abspeichern dieser Anfragen habe ich 2 Tabellen erstellt. In der ersten werden die Auftragsinformationen gespeichert. Neben den Spalten für Name, Adresse etc. gibt es auch 5 Spalten in die die zu versendenden Muster eingepflegt werden sollen. In diesen fünf spalten soll nur eine ID gespeichert werden um Redundanzen zu vermeiden. In der zweiten Tabelle sind die Namen der einzelnen Farben hinterlegt.

    Tabelle Endkunden
    |A_ID|Anrede|name|vorname|plz|ort|land|m_1|m_2|m_3|m_4|m_5|
    | 1 | Herr | XY | XYZ |123|XY | DE | 1 | 2 | 3 | 0 | 0 |

    Tabelle Farben

    |F_ID| F_Name |
    | 0 | - |
    | 1 | Alpinweiss |
    | 2 | Schwarz |
    | - etc - |
    | 43 | magnolie |

    Am Ende sollen in einer Tabelle auf unserem Intranet nur die Endkundeninformationen plus die Namen der Farbmuster, JEDOCH NICHT die IDs zusehen sein.

    |A_ID|Anrede|name|vorname|plz|ort|land| Farbe 1 | Farbe 2 | Farbe 3 | Farbe 4 |
    | 1 | Herr | XY | XYZ |123|XY | DE | weiss | Schwarz | Buche | Ahorn |

    Ich hoffe ihr könnt so verstehen, was ich meine 😃

    Vielen dank schon einmal für die Hilfe 🙂



  • Ungetestet:

    SELECT
      k.anrede,
      k.name,
      k.vorname,
      k.plz,
      k.wohnort,
      k.land,
      f1.F_name,
      f2.F_name,
      f3.F_name,
      f4.F_name,
      f5.F_name
    FROM
      kunden k
      LEFT JOIN farben f1 ON f1.F_ID = k.m_1
      LEFT JOIN farben f2 ON f2.F_ID = k.m_2
      LEFT JOIN farben f3 ON f3.F_ID = k.m_3
      LEFT JOIN farben f4 ON f4.F_ID = k.m_4
      LEFT JOIN farben f5 ON f5.F_ID = k.m_5
    


  • Okay ich habe das jetzt mal so getestet und es funktioniert auch wunderbar 🙂

    Vieeeeeeeeeeeeelen vielen dank dafür, bin jetzt aufjendenfall eine Erfahrung reicher.

    Liebste Grüße und einen schönen Tag

    Christoph 😃 👍


Anmelden zum Antworten