我正在做一個查詢,我從一個名爲employee的表中選擇所有表,並且希望從另外兩個表中計數employee_id並在2個獨立列中表示計數。從一個表中選擇其他兩個表的計數
的表格:
- 僱員[ID等]
- 報告[ID,EMPLOYEE_ID等]
- office_report [ID,EMPLOYEE_ID等]
我到目前爲止所做的是:
SELECT emp.*, COUNT(rep.id) no_of_field_reports, COUNT(of_rep.id) no_of_office_reports
FROM employee emp
LEFT JOIN report rep
ON (emp.id = rep.employee_id)
LEFT JOIN office_report of_rep
ON (emp.id = of_rep.employee_id)
WHERE emp.user_id =7 AND emp.active = 1
GROUP BY emp.id, emp.name
ORDER BY emp.name ASC
問題是,只要我在報告表中有報告,計數就會紊亂起來。說我有報告表和2 16份報告office_report表,爲no_of_field_reports和no_of_office_reports計數將成爲32
林失去了一些東西很明顯,但因爲我不是一個天才SQL我無法弄清楚什麼。
請務必解釋是什麼導致了問題,所以我可以從我的錯誤中學習,並更好地理解這些類型的查詢,因爲這不會是最後一次。
我想答案會在一般的MariaDB的,MySQL的相同,SQL,所以我將所有這些標籤對注意力的緣故..也許一個方法,如果你是不同的計數後(雖然
幾個選項。對每個表使用唯一ID的不同計數,或將計數作爲內聯視圖。計數混亂的原因是由於表之間的基數誇大了計數。 – xQbert
@xQbert添加DISTINCT到我的SELECT似乎沒有工作..我想我做錯了.. – DTH