Analisis komprehensif dan penyelesaian ralat SQL "Pengecam berbilang bahagian 'a.maxa' tidak boleh diikat"
Dalam pertanyaan SQL, ralat "pengecam berbilang bahagian 'a.maxa' tidak boleh diikat" biasanya berpunca daripada konflik antara gabungan tersirat dan eksplisit. Untuk mengelakkan ralat ini, adalah penting untuk memahami keutamaan dan tingkah laku kedua-dua jenis sambungan ini.
Gabungan tersirat (gabungan koma) menentukan syarat cantuman dalam klausa WHERE. Gabungan eksplisit (menggunakan kata kunci JOIN) diutamakan daripada gabungan tersirat.
Dalam pertanyaan yang diberikan, masalahnya ialah cantuman tersirat antara phuongxa
(a) dan quanhuyen
(b), manakala secara eksplisit bergabung khaosat
(dkcd) dengan b. Pertanyaan menjangkakan untuk menyertai a dan b dengan dkcd, tetapi sebenarnya, gabungan itu berlaku terlebih dahulu antara b dan dkcd. Ini menyebabkan rujukan kepada a.maxa
dalam syarat cantuman dkcd menjadi tidak sah kerana a belum lagi bercantum kepada dkcd pada ketika ini.
Untuk menyelesaikan ralat ini, adalah disyorkan untuk menulis semula pertanyaan menggunakan semua gabungan eksplisit. Contohnya:
<code class="language-sql">SELECT DISTINCT a.maxa, b.mahuyen, a.tenxa, b.tenhuyen, ISNULL(dkcd.tong, 0) AS tongdkcd FROM phuongxa a INNER JOIN quanhuyen b ON LEFT(a.maxa, 2) = b.mahuyen LEFT OUTER JOIN ( SELECT maxa, COUNT(*) AS tong FROM khaosat WHERE CONVERT(datetime, ngaylap, 103) BETWEEN 'Sep 1 2011' AND 'Sep 5 2011' GROUP BY maxa ) AS dkcd ON dkcd.maxa = a.maxa WHERE a.maxa <> '99' ORDER BY a.maxa</code>
Pertanyaan ini menggunakan cantuman eksplisit pada ketiga-tiga jadual, memastikan susunan gabungan yang diperlukan. Selain itu, kami melayakkan ORDER BY
dengan alias a dalam klausa maxa
, dengan jelas menyatakan medan di mana jadual pengisihan harus berdasarkan.
Memahami gelagat gabungan tersurat dan tersirat adalah penting untuk menyelesaikan masalah ralat tersebut dan menulis pertanyaan SQL yang cekap.
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Mengembalikan 'Pengecam Pelbagai Bahagian 'a.maxa' Tidak Dapat Diikat'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!