Menyertai Jadual Yang Sama Dua Kali: Fahami Pendekatan Terbaik
Apabila bekerja dengan berbilang jadual, adalah perkara biasa untuk menghadapi tugas untuk menyertainya lajur yang sama beberapa kali. Cabaran ini timbul apabila anda memerlukan maklumat daripada jadual yang sama yang dipautkan ke lajur berlainan jadual lain.
Dalam senario yang diberikan, anda mempunyai dua jadual dengan struktur yang serupa, bercantum berdasarkan Jadual1.Nombor Telefon1 dan Jadual1.Nombor Telefon2. Matlamatnya adalah untuk mendapatkan set hasil yang mengandungi PhoneNumber1, SomeOtherField yang sepadan dengan PhoneNumber1, PhoneNumber2 dan SomeOtherField yang sepadan dengan PhoneNumber2.
Kaedah 1: Berbilang Gabungan
Kaedah pertama melibatkan bergabung di atas meja yang sama dua kali, seperti yang ditunjukkan di bawah:
SELECT t1.PhoneNumber1, t1.PhoneNumber2, t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2 FROM Table1 t1 INNER JOIN Table2 t2 ON t2.PhoneNumber = t1.PhoneNumber1 INNER JOIN Table2 t3 ON t3.PhoneNumber = t1.PhoneNumber2
Kaedah ini mendapatkan semula data yang diingini dengan cekap, walaupun ia mungkin kelihatan menyusahkan kerana berbilang klausa gabungan.
Kaedah 2: ATAU Syarat
Kaedah kedua cuba memudahkan pertanyaan menggunakan keadaan ATAU dalam HIDUP klausa:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
Walau bagaimanapun, pendekatan ini memerlukan pengendalian tambahan dan mungkin tidak menghasilkan hasil yang diharapkan.
Pendekatan Terbaik
Pendekatan yang disyorkan ialah untuk menggunakan Kaedah 1, menyertai di atas meja beberapa kali dengan alias yang jelas untuk setiap penyertaan. Kaedah ini boleh dipercayai dan memastikan pengambilan data yang tepat.
Pertimbangan Pemfaktoran Semula
Perlu diingat bahawa menggunakan nombor telefon sebagai kunci semula jadi boleh membawa kepada isu penyelenggaraan, kerana nombor telefon mungkin kerap berubah. Pertimbangkan untuk menggunakan kunci buatan untuk mengekalkan integriti data.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Meja dengan Sendiri Berbilang Kali dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!