Masalah:
Apabila menggabungkan dua jadual dengan lajur yang sepadan, bagaimana bolehkah anda mendapatkan semula data yang sepadan dengan kedua-dua lajur dengan cekap serentak?
Kaedah 1: Sertai Dua Kali
Seperti yang dilihat dalam contoh di atas, menyertai jadual yang sama dua kali membolehkan pengambilan data berasingan berdasarkan setiap lajur yang sepadan:
SELECT t.PhoneNumber1, t.PhoneNumber2, t1.SomeOtherFieldForPhone1, t2.someOtherFieldForPhone2 FROM Table1 t JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1 JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
Kaedah 2: ATAU dalam HIDUP Klausa
Pendekatan alternatif, walaupun tidak ditunjukkan sebagai berfungsi, akan cuba bergabung pada berbilang lajur padanan menggunakan OR dalam klausa ON:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
Amalan Terbaik :
Kaedah 1 disyorkan sebagai penyelesaian terbaik. Ia menyediakan cara yang mudah dan jelas untuk mendapatkan semula data yang sepadan dengan berbilang lajur padanan tanpa bergantung pada klausa ATAU yang kompleks.
Alternatif untuk Memperbaik Reka Bentuk:
Walaupun kedua-dua kaedah boleh dicapai hasil yang diingini, adalah penting untuk mempertimbangkan amalan terbaik reka bentuk pangkalan data untuk mengelakkan bergantung pada cantuman antara jadual berdasarkan semula jadi kunci, seperti nombor telefon. Kunci semula jadi boleh berubah dengan kerap, membawa kepada potensi isu dengan integriti data.
Atas ialah kandungan terperinci Menyertai Meja Yang Sama Dua Kali: Bila dan Bagaimana Amalan Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!