Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich mehrere Tabellen in SQL mit identischen Fremdschlüsseln korrekt?

Wie verbinde ich mehrere Tabellen in SQL mit identischen Fremdschlüsseln korrekt?

DDD
DDDOriginal
2024-12-26 07:11:12820Durchsuche

How to Correctly Join Multiple Tables in SQL with Identical Foreign Keys?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn