Gabung Bersyarat dengan Nama Jadual Dinamik dalam MySQL
Dalam MySQL, adalah mungkin untuk melaksanakan gabungan berdasarkan kriteria bersyarat, membolehkan anda menggabungkan data daripada jadual yang berbeza secara dinamik. Pertimbangkan senario berikut di mana anda mempunyai jadual yang mengandungi lajur 'jenis' dengan nilai terhitung mewakili nama jadual lain.
Matlamat anda adalah untuk melakukan gabungan dengan jadual tertentu berdasarkan nilai dalam 'jenis' lajur. Contohnya:
switch($type) { case 'table1': JOIN table1; break; case 'table2': JOIN table2; break; }
Penyelesaian
Malangnya, MySQL tidak menyokong cantuman bersyarat secara langsung menggunakan sintaks suis case. Walau bagaimanapun, anda boleh mencapai kefungsian yang serupa menggunakan gabungan penyataan CASE dan LEFT JOIN. Pertanyaan berikut menunjukkan pendekatan ini:
SELECT t.id, t.type, t2.id AS id2, t3.id AS id3 FROM t LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2' LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3'
Dalam pertanyaan ini, pernyataan CASE digantikan dengan siri operasi LEFT JOIN. Klausa ON untuk setiap LEFT JOIN menentukan syarat cantuman berdasarkan nilai lajur 'jenis'.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Bersyarat dengan Nama Jadual Dinamik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!