ホームページ >データベース >mysql チュートリアル >SQL で複数のテーブルを同一の外部キーで正しく結合するにはどうすればよいですか?
SQL 内部結合による複数のテーブルの結合
データベース内の複数のテーブルを操作する場合、多くの場合、関連データを取得するためにテーブルを結合する必要があります。 。結合の 1 つのタイプは内部結合と呼ばれ、指定された基準に一致する行のみを取得します。
複数のテーブルを結合するには、次の構文を使用できます。
SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2 INNER JOIN table3 ON table1.column1 = table3.column3
この例では、の場合、table1 テーブルは、column1 列を使用して table2 テーブルに結合され、その後、再度、column1 列を使用して table3 テーブルに結合されます。これにより、3 つのテーブルすべてで指定された基準に一致する行のみが返されるようになります。
ただし、同じ外部キーを持つ複数のテーブルを結合しようとすると、問題が発生する可能性があります。たとえば、次のスキーマがあるとします。
table1: id, name table2: id, table1Id table3: id, table1Id
次のクエリを使用して最初の 2 つのテーブルを結合できます。
SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
次に、3 番目のテーブルを結合したいとします。クエリ。次のことを試してみてください:
SELECT * FROM `table1` INNER JOIN `table2` INNER JOIN table3 ON table1.id=table2.table1Id=table3.table1Id
ただし、このクエリは結果を返しません。その理由は、table1.id 列が table2.table1Id と table3.table1Id の両方と比較されるためです。これを修正するには、各テーブルが独自の一意の外部キー列を使用して結合されていることを確認する必要があります。正しいクエリは次のようになります:
SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.table1Id INNER JOIN table3 ON table1.id=table3.table1Id
以上がSQL で複数のテーブルを同一の外部キーで正しく結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。