Wie kann ich eine N:M-Beziehung in SQL darstellen?

1 Antwort

n:m kann man nur mit 3 tabellen erzeugen

2 Stammtabellen und 1 bewegungstabelle

also

Stamm1
ID1 PRIMARY KEY; Name1

Stamm2
ID2 PRIMARY KEY; Name2

BewegungNM
ID1 ; ID2

kein primary keys bei ID1 und ID2 bei der BewegunNM da dort ja gerade doppelte werte vorkommen sollen, es sind aber die IDs von der jeweiligen Stamm tabelle . man kann natürlich dort nochmal eine extra ID Primary Key machen um sachen einfacher bearbeiten zu können .

So kannst Du dann

SELECT Stamm1.Name1,Stamm2.Name2 
  FROM BewegungNM /* alle einträge aus dieser tabelle */
  JOIN Stamm1 /* passende einträge aus dieser tabelle */ 
    ON BewegungNM.ID1 = Stamm1.ID1 /* die mit dem wert der stamm tabelle übereinstimmt */
  JOIN Stamm2 /* passende einträge aus dieser tabelle */
    ON BewegungNM.ID2 = Stamm2.ID2 /* die mit dem wert der stamm tabelle übereinstimmt */