Rumah >pangkalan data >tutorial mysql >Mengapa Mencampurkan JOIN dan Koma dalam Pertanyaan MySQL Menyebabkan Ralat 'Lajur Tidak Diketahui'?
Mencampurkan JOIN dan koma dalam pertanyaan MySQL menyebabkan ralat
Huraian Masalah
Apabila melaksanakan pertanyaan MySQL berikut:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m, telephone as t INNER JOIN memeberFunctions as mf ON m.id = mf.memeber INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber WHERE mf.function = 32</code>
akan menghadapi ralat berikut:
<code>#1054 - Unknown column 'm.id' in 'on clause'</code>
Pertanyaan gagal walaupun lajur wujud. Ralat ini berlaku apabila sintaks ANSI 1992 JOIN dan koma digunakan bersama dalam pertanyaan.
Penyelesaian
Menurut dokumentasi MySQL, mencampurkan JOIN dan koma harus dielakkan. Untuk menyelesaikan isu ini, gantikan koma dengan operator JOIN yang sesuai (SANGLANG, DALAM, KIRI).
Pertanyaan yang dikemas kini menggunakan INNER JOIN adalah seperti berikut:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m INNER JOIN telephone as t ON <join condition> INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32 INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
Perhatikan bahawa syarat cantuman antara m
dan t
hendaklah dinyatakan untuk mengelakkan produk Cartesian.
Nota Tambahan
Untuk kejelasan dan kecekapan, operator JOIN harus digunakan dan bukannya koma. Koma menunjukkan CROSS JOIN, yang boleh menyebabkan tingkah laku yang tidak dijangka, terutamanya apabila menggabungkan berbilang jadual. Dengan menggunakan operator JOIN yang jelas, anda boleh mentakrifkan perhubungan tertentu antara jadual untuk memastikan anda mendapat hasil yang anda inginkan.
Atas ialah kandungan terperinci Mengapa Mencampurkan JOIN dan Koma dalam Pertanyaan MySQL Menyebabkan Ralat 'Lajur Tidak Diketahui'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!