[英]COUNT() and Left Join not working
我在查詢中遇到麻煩,該查詢顯示員工編號,名字,姓氏和每個員工的訂單數量。 確保“訂單數”列名稱應為“ OrderCount”。 按OrderCount排序,然后按員工ID排序。 允許為空。
含有employee_data列: Emp_ID
, F_Name
, L_Name
order_data含有列: O_ID
, Emp_ID
, OrderNumber
這是我的查詢:
Select order_data.Emp_ID, F_Name, L_Name, COUNT(employee_data.Emp_ID) as OrderCount
FROM order_data
LEFT JOIN employee_data
ON employee_data.Emp_ID = order_data.Emp_ID
GROUP BY order_data.Emp_ID
ORDER BY OrderCount
這些是我的表:
employee_data
order_data
輸出應為:
但這給了我錯誤的輸入。
聚合函數不能與查詢中的其他字段一起使用。 您可以在子查詢中使用它,如下所示:
Select order_data.Emp_ID, F_Name, L_Name, (select COUNT(employee_data.Emp_ID) from employee_data) as OrderCount
FROM order_data
LEFT JOIN employee_data
ON employee_data.Emp_ID = order_data.Emp_ID
GROUP BY order_data.Emp_ID
ORDER BY OrderCount
希望能幫助到你 .. :)
嘗試這個:
SELECT od.Emp_ID, ed.F_Name, ed.L_Name, COUNT(DISTINCT od.O_ID) AS OrderCount
FROM order_data od
LEFT JOIN employee_data ed ON ed.Emp_ID = od.Emp_ID
GROUP BY od.Emp_ID
ORDER BY OrderCount
在查詢中替換
ORDER BY OrderCount
至
ORDER BY order_data.Emp_ID
您的問題解決了...
我認為您的表格順序錯誤:
Select ed.Emp_ID, ed.F_Name, ed.L_Name, COUNT(od.Emp_ID) as OrderCount
FROM employee_data ed LEFT JOIN
order_data od
ON ed.Emp_ID = od.Emp_ID
GROUP BY ed.Emp_ID
ORDER BY OrderCount;
大概您希望所有員工,包括其員工人數。 在正確維護的數據庫中,訂單表上不應包含無效的員工ID。
您必須在group by子句中聲明未在任何聚合函數中使用的列。 嘗試在group by子句中的這些列中添加“ order_data.Emp_ID,F_Name,L_Name”。
就像其他人說的那樣,如果您不想使用NULL值並且不想了解沒有訂單的員工,則可以使用聯接...如果您需要不存在的員工的訂單(但這可能會起作用) , 采用
SELECT
od.Emp_ID, ed.F_Name, ed.L_Name, COUNT(od.Emp_ID) as OrderCount
FROM
order_data od
LEFT JOIN
employee_data ed ON ed.Emp_ID = od.Emp_ID
GROUP BY
od.Emp_ID
ORDER BY
OrderCount, od.Emp_ID
您還缺少第二個ORDER BY值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.