Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL Saya Mengembalikan 'Pengecam Pelbagai Bahagian 'a.maxa' Tidak Dapat Diikat'?

Mengapa Pertanyaan SQL Saya Mengembalikan 'Pengecam Pelbagai Bahagian 'a.maxa' Tidak Dapat Diikat'?

Susan Sarandon
Lepaskan: 2025-01-17 03:31:08
asal
892 orang telah melayarinya

Why Does My SQL Query Return

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan