Mengambil semula Tetapan Lalai dan Khusus Karakter dengan Cekap dengan LEFT JOIN
Contoh ini menunjukkan cara untuk mendapatkan semula tetapan lalai dan, jika berkenaan, penggantian khusus aksara menggunakan LEFT JOIN
. Pertanyaan asal hanya mengembalikan tetapan khusus aksara, tidak termasuk lalai.
Kunci untuk mendapatkan kedua-duanya adalah dengan meletakkan klausa WHERE
dengan betul. Daripada menapis selepas gabungan, masukkan penapis ID aksara dalam syarat penyertaan:
<code class="language-sql">SELECT settings.*, character_settings.value FROM settings LEFT JOIN character_settings ON character_settings.setting_id = settings.id AND character_settings.character_id = '1';</code>
Pertanyaan yang disemak ini melakukan LEFT JOIN
antara jadual settings
dan character_settings
. Klausa ON
memastikan bahawa hanya setting_id
s yang sepadan digabungkan dan seterusnya mengehadkan gabungan kepada rekod dengan character_id
ialah '1'. Yang penting, LEFT JOIN
menjamin bahawa semua baris daripada jadual settings
disertakan dalam hasil, walaupun tiada baris yang sepadan dalam character_settings
.
Dataset yang terhasil akan menyerupai ini:
<code class="language-php">array( 0 => array('somekey' => 'keyname', 'value' => 'thevalue'), // Default + Character-specific (if exists) 1 => array('somekey2' => 'keyname2', 'value' => null), // Default only 2 => array('somekey3' => 'keyname3', 'value' => null) // Default only );</code>
Baris dengan bukan nol value
menunjukkan kedua-dua tetapan lalai dan khusus aksara. Nilai NULL
dalam lajur value
menandakan bahawa hanya tetapan lalai wujud untuk kunci tertentu itu.
Atas ialah kandungan terperinci Bagaimana untuk Dapatkan Tetapan Lalai dan Khusus Karakter Menggunakan LEFT JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!