ホームページ >データベース >mysql チュートリアル >SQL で複数のテーブルを同一の外部キーで正しく結合するにはどうすればよいですか?

SQL で複数のテーブルを同一の外部キーで正しく結合するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-26 07:11:12824ブラウズ

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

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。