1:n Verknüpfung richtig ausgeben

Notze

Neuer Benutzer
Beiträge
2
Hallo Leute,

ich habe zwei Tabellen erstellt die in einer 1:n-Relation stehen.
Hier je ein Ausschnitt aus jeder Tabelle:

Tabelle: "zutaten"
Name | 1. Effekt | 2. Effekt | 3. Effekt | 4. Effekt
Abeceanischer Mirakelbarsch | 48 | 3 | 4 | 37​
Bärenklaue | 9 | 23 | 16 | 34​
Berits Asche | 7 | 18 | 11 | 7​
Biene | 1 | 6 | 7 | 9​
Bienenstockhülle | 25 | 29 | 37 | 49​
Blasenpilz | 7 | 24 | 17 | 39​
Blaue Bergblume | 11 | 24 | 23 | 34​
Tabelle: "effekte"
ID | Effekt
1 | Anfälligkeit für Blitz​
2 | Anfälligkeit für Feuer​
3 | Anfälligkeit für Frost​
4 | Anfälligkeit für Gift​
5 | Anfälligkeit für Magie​
6 | Ausdauer regenerieren​
7 | Ausdauer senken​
8 | Ausdauer verstärken​
9 | Ausdauer wiederherstellen​


Jetzt möchte ich die Zutaten ausgeben und alle dazugehörigen Effekte angezeigt bekommen.
Am liebsten wäre es mir wenn die Zahlen in "zutaten" mit den Bezeichnungen aus "effekte" ausgetauscht würden.

Bis jetzt habe ich folgendes:

Code:
SELECT Name, Effekt
FROM zutaten z
    LEFT JOIN effekte e
ON z.Effekt1 = e.ID
    OR z.Effekt2 = e.ID
    OR z.Effekt3 = e.ID
    OR z.Effekt4 = e.ID

Ausgabe:
Name | Effekt
Abeceanischer Mirakelbarsch | Anfälligkeit für Frost​
Abeceanischer Mirakelbarsch | Anfälligkeit für Gift​
Abeceanischer Mirakelbarsch | Schleichen verstärken​
Abeceanischer Mirakelbarsch | Wiederherstellung verstärken​
Bärenklaue | Ausdauer wiederherstellen​
Bärenklaue | Einhändig verstärken​
Bärenklaue | Gesundheit verstärken​

Code:
SELECT
    Effekt
FROM zutaten z
    left join effekte e
    on z.Effekt2=e.ID

Ausgabe:
Effekt
Anfälligkeit für Frost​
Gesundheit verstärken​
Feuerresistenz​
Ausdauer regenerieren​
Leichte Rüstung verstärken​
Gesundheit wiederherstellen​
Gesundheit wiederherstellen​

Ist es möglich die Ausgaben zusammenzuführen und so mein gewünschtes Ergebnis zu erhalten?

Grüße Notze ;D
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.171
Hallo Leute,

ich habe zwei Tabellen erstellt die in einer 1:n-Relation stehen.


Ist es möglich die Ausgaben zusammenzuführen und so mein gewünschtes Ergebnis zu erhalten?

Grüße Notze ;D

Sicher, 4 mal JOINen, dabei jedesmal einen Alias geben. Das schaffst Du. N Spalten, die wie bei Dir durchnummeriert sind, zeugen aber von einem offenbar schlechten Design. Was machst Du, wenn da eines Tages wenn ein 5. Effekt nötig ist?
 

ukulele

Datenbank-Guru
Beiträge
4.416
Du hast es ja fast schon selbst richtig geschrieben:
Code:
SELECT    z.Name,
        e1.Effekt,
        e2.Effekt,
        e3.Effekt,
        e4.Effekt
FROM    zutaten z
LEFT JOIN effekte e1 ON z.Effekt1 = e1.ID
LEFT JOIN effekte e2 ON z.Effekt2 = e2.ID
LEFT JOIN effekte e3 ON z.Effekt3 = e3.ID
LEFT JOIN effekte e4 ON z.Effekt4 = e4.ID
 
Werbung:

Notze

Neuer Benutzer
Beiträge
2
Danke ihr beiden!

@akretschmer: Bei den Datensätzen handelt es sich um die Alchemiezutaten aus dem Computerspiel Skyrim, dort hat jede Zutat immer genau 4 Effekte.
 
Oben