oschl: Tabellen verknüpfen

Hi Forum. Ich will hier zwei Tabellen in einem SELECT miteinander verknüpfen. Vielleicht der Einfachheit halber ein kleines Beispiel.

Meine Tabellen:
tabelle 1
id feld 1 feld 2 feld 3
1  a      b      c
2  d      e      f
3  g      h      i
4  j      k      l
5  m      n      o

tabelle 2
id feld 1
1  aa
2  bb
3  cc
4  dd
5  ee

tabelle 3
id1 id2
1   1
1   3
2   1
2   2
2   3
4   2

Wie komme ich jetzt zu diesem Ergebnis? Ich will die Felder aus Tabelle 1 angezeigt bekommen mit jedem Feld aus Tabelle 2, die in Tabelle 3 als Verknüpfung angegeben sind.

ergebnis
a   b   c   aa   cc
d   e   f   aa   bb
j   k   l   bb

  1. gar nicht. du willst eine beliebige feldzahl verknüpfen und das geht meines erachtens so ohne weiteres nicht. du könntest einen right join probieren und ein ergebnis wie dieses erzielen:

    a   b   c   aa
    a   b   c   cc
    d   e   f   aa
    d   e   f   bb
    j   k   l   bb

    1. Weil es so ohne weiteres nicht ging hatte ich ja hier nach Hilfe gesucht ;)

      Die Struktur war mir so vorgegeben und diese kann ich auch nicht ändern. Vorgabe war auch, die Sache rein über SQL zu lösen. Des Rätsels  Lösung nennt sich group_concat, damit sind das dann zwar nicht zwei Felder für aa und bb, aber ein Feld mit "aa, bb" genügt mir auch.

  2. Hallo,

    du hast es hier im westenlichen mit Joins zu tun.
    Ich gehe davon aus das das Feld ID die Datensätze
    eindeutig zugewiesen ist? Wäre dem so könnte man
    wie folgt verfahren (grob umrissen):

    SELECT tab1.feld1, tab1.feld2, tab1.feld3, tab2.feld2
         FROM tabelle1 AS tab1
    JOIN tabelle2 AS tab2 ON tab2.id = tab1.id
    JOIN tabelle3 AS tab3
         ON tab3.id1 = tab1.id AND tab3.id2 = tab2.id
    WHERE .......bla

    Da ich nicht sicher bin, ob ich Dich richtig verstanden habe, hier meine Zweite Vermutung:

    Du möchtest dynamisch eine Tabelle befüllen (Anzahl der Spalten steht nicht fest), bzw. erstellen? Ich würde hier mit stored procedures arbeiten....

    Der letzte, und irgendwie einfachere Weg, wäre meine Datenhaltung
    kurz zu überdenken... ;-)

    LG,
    Heiko