Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql ... di mana klausa ambigu

Kesalahan yang Anda dapatkan memberi tahu Anda bahwa kolom CategoryID di WHERE . Anda klausa ambigu, artinya sistem bermasalah untuk mengidentifikasi kolom yang sesuai karena ada beberapa CategoryID kolom.

Untuk memperbaiki masalah ini, gunakan alias untuk menentukan kolom mana yang ingin Anda gunakan untuk WHERE Anda klausa:

SELECT cat2.CategoryID AS CategoryID
    ,cat2.Name AS CategoryName
    ,COUNT(p.ProductID) AS CountProducts
FROM Category AS cat
INNER JOIN Category AS cat2 ON cat2.ParrentCategoryID = cat.CategoryID
INNER JOIN Products AS p ON p.CategoryID = cat2.CategoryID
WHERE cat.CategoryID = '876'
GROUP BY cat2.CategoryID, cat2.Name
ORDER BY cat2.Name

Saya juga mengubah sedikit kueri untuk mendapatkan hasil yang sama tetapi alih-alih menggunakan kombinasi LEFT JOIN + IN klausa + sub kueri, saya menggunakan INNER JOIN klausa. Dengan kueri ini Anda hanya perlu menentukan CategoryID yang Anda inginkan sekali dan secara otomatis akan mendapatkan setiap kategori anak.

Saya tidak yakin kueri Anda berjalan dengan benar karena Anda menggunakan COUNT berfungsi tanpa mengelompokkan hasil berdasarkan CategoryID ...

Semoga ini bisa membantu Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan untuk mendapatkan catatan induk dengan catatan anak, diikuti oleh catatan induk-anak berikutnya di mysql

  2. MySQL JOIN untuk mengganti ID dengan nilai dari tabel lain

  3. Masalah dengan mysqldump:--defaults-extra-file option tidak berfungsi seperti yang diharapkan

  4. Cara menghasilkan nilai acak unik untuk setiap pengguna di laravel dan menambahkannya ke database

  5. MacOS Tidak dapat memulai Server MySQL