Rumah >pangkalan data >tutorial mysql >Mengapa Gabungan Kiri Saya Tidak Mengembalikan Semua Baris Dari Jadual Kiri?
Kiri Sertai Tidak Mengembalikan Semua Baris: Menangani Isu
Seperti yang dibincangkan dalam urutan sebelumnya, ketiadaan semua baris dalam gabungan kiri pertanyaan boleh berpunca daripada klausa WHERE yang diletakkan dengan tidak betul. Dalam kes ini, pertanyaan bertujuan untuk mengekstrak data daripada jadual 'jos_hp_properties' dan secara pilihan memilih nilai bernama 'room_price_high' daripada jadual 'jos_hp_properties2' berdasarkan lajur medan yang sama dengan 23.
Untuk menyelesaikan masalah ini mengeluarkan dan memastikan pengembalian semua baris dari jadual pertama, keadaan WHERE harus dipindahkan dari kedudukan asalnya selepas LEFT Kenyataan OUTER JOIN ke dalam klausa JOIN itu sendiri. Pertanyaan yang diubah suai sepatutnya menyerupai ini:
SELECT pr.*, pr7.value AS `room_price_high` FROM `jos_hp_properties` pr LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
Dengan memasukkan keadaan WHERE dalam JOIN, pertanyaan menjadi lebih jelas dan mengarahkan pangkalan data untuk hanya mengambil baris daripada jadual kedua di mana lajur medan adalah sama dengan 23 . Ini memastikan bahawa semua baris daripada jadual pertama dikembalikan, tidak kira sama ada nilai yang sepadan wujud dalam jadual kedua. Akibatnya, nilai NULL yang sepadan akan dikembalikan untuk baris dalam jadual pertama yang tidak mempunyai baris yang sepadan dalam jadual kedua berdasarkan kriteria medan=23.
Atas ialah kandungan terperinci Mengapa Gabungan Kiri Saya Tidak Mengembalikan Semua Baris Dari Jadual Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!