Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich mehrere Tabellen in SQL mit identischen Fremdschlüsseln korrekt?
Mehrere Tabellen mit SQL Inner Join verbinden
Bei der Arbeit mit mehreren Tabellen in einer Datenbank ist es oft notwendig, diese zu verbinden, um zusammengehörige Daten abzurufen . Eine Art von Verknüpfung wird als innere Verknüpfung bezeichnet, die nur Zeilen abruft, die den angegebenen Kriterien entsprechen.
Um mehrere Tabellen zu verknüpfen, können Sie die folgende Syntax verwenden:
SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2 INNER JOIN table3 ON table1.column1 = table3.column3
In diesem Beispiel , wird die Tabelle „table1“ mit der Tabelle „table2“ über die Spalte „column1“ und dann mit der Tabelle „table3“ über die Spalte „column1“ verbunden. Dadurch wird sichergestellt, dass nur Zeilen zurückgegeben werden, die den angegebenen Kriterien in allen drei Tabellen entsprechen.
Es kann jedoch zu einem Problem kommen, wenn Sie versuchen, mehrere Tabellen mit denselben Fremdschlüsseln zu verknüpfen. Angenommen, Sie haben das folgende Schema:
table1: id, name table2: id, table1Id table3: id, table1Id
Sie können die ersten beiden Tabellen mit der folgenden Abfrage verknüpfen:
SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
Jetzt möchten Sie die dritte Tabelle verknüpfen die Abfrage. Sie könnten Folgendes versuchen:
SELECT * FROM `table1` INNER JOIN `table2` INNER JOIN table3 ON table1.id=table2.table1Id=table3.table1Id
Diese Abfrage liefert jedoch keine Ergebnisse. Der Grund dafür ist, dass die Spalte table1.id sowohl mit table2.table1Id als auch mit table3.table1Id verglichen wird. Um dieses Problem zu beheben, müssen Sie sicherstellen, dass jede Tabelle mit einer eigenen eindeutigen Fremdschlüsselspalte verknüpft wird. Die richtige Abfrage wäre:
SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.table1Id INNER JOIN table3 ON table1.id=table3.table1Id
Das obige ist der detaillierte Inhalt vonWie verbinde ich mehrere Tabellen in SQL mit identischen Fremdschlüsseln korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!