簡體   English   中英

COUNT()和左聯接不起作用

[英]COUNT() and Left Join not working

我在查詢中遇到麻煩,該查詢顯示員工編號,名字,姓氏和每個員工的訂單數量。 確保“訂單數”列名稱應為“ OrderCount”。 按OrderCount排序,然后按員工ID排序。 允許為空。

含有employee_data列: Emp_IDF_NameL_Name

order_data含有列: O_IDEmp_IDOrderNumber

這是我的查詢:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM