Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyertai Berbilang Jadual dalam SQL dengan Kekunci Asing yang Sama?

Bagaimana untuk Menyertai Berbilang Jadual dalam SQL dengan Kekunci Asing yang Sama?

DDD
Lepaskan: 2024-12-26 07:11:12
asal
819 orang telah melayarinya

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

Menyertai Berbilang Jadual dengan SQL Inner Join

Apabila bekerja dengan berbilang jadual dalam pangkalan data, selalunya perlu untuk menyertainya untuk mendapatkan data yang berkaitan . Satu jenis cantuman dipanggil cantuman dalaman, yang mengambil hanya baris yang sepadan dengan kriteria yang ditentukan.

Untuk menyertai berbilang jadual, anda boleh menggunakan sintaks berikut:

SELECT *
FROM table1
INNER JOIN table2 ON table1.column1 = table2.column2
INNER JOIN table3 ON table1.column1 = table3.column3
Salin selepas log masuk

Dalam contoh ini , jadual table1 dicantumkan ke jadual table2 menggunakan lajur lajur1, dan kemudian ke jadual table3 menggunakan lajur lajur1 sekali lagi. Ini memastikan bahawa hanya baris yang sepadan dengan kriteria yang ditentukan dalam ketiga-tiga jadual dikembalikan.

Walau bagaimanapun, anda mungkin menghadapi masalah apabila cuba untuk menyertai berbilang jadual dengan kunci asing yang sama. Sebagai contoh, katakan anda mempunyai skema berikut:

table1: id, name
table2: id, table1Id
table3: id, table1Id
Salin selepas log masuk

Anda boleh menyertai dua jadual pertama dengan pertanyaan berikut:

SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
Salin selepas log masuk

Sekarang, anda ingin menyertai jadual ketiga ke dalam pertanyaan itu. Anda boleh mencuba perkara berikut:

SELECT * FROM `table1` 
INNER JOIN `table2` 
INNER JOIN table3 
ON table1.id=table2.table1Id=table3.table1Id
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini tidak akan mengembalikan sebarang hasil. Sebabnya ialah lajur table1.id sedang dibandingkan dengan kedua-dua table2.table1Id dan table3.table1Id. Untuk membetulkannya, anda perlu memastikan bahawa setiap jadual dicantumkan menggunakan lajur kunci asing uniknya sendiri. Pertanyaan yang betul ialah:

SELECT * 
FROM table1 
INNER JOIN table2
      ON table1.id=table2.table1Id
INNER JOIN table3
      ON table1.id=table3.table1Id
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dalam SQL dengan Kekunci Asing yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan