我們有三個表,我們想查詢找出每個企業客戶的數量和每個業務記錄數MySQL的多個INNER JOIN
這三個表:
businessDetails
-------------------
businessDetails.ID
businessDetails.name
clientDetails
-------------------
clientDetails.ID
clientDetails.businessDetailsID
records
-------------------
records.ID
records.businessDetailsID
我們沒有任何問題可以同時從兩個表中選擇一個計數(businessDetails加上clientDetails或記錄)。例如
SELECT businessDetails.name AS businessName
, COUNT(clientDetails.businessDetailsID) AS totalClients
FROM `businessDetails`
INNER JOIN clientDetails
ON clientDetails.businessDetailsID = businessDetails.businessDetailsID
GROUP BY
businessDetails.name
ORDER BY
totalClients DESC
該查詢爲我們提供了一個很好的結果如預期:
--------------------------------
businessName | totalClients
--------------------------------
Initech | 23
Cylon Inc | 148
The Dude Ltd | 71
我們正在運行到的問題是如何同時做兩個clientDetails和記錄的計數。我們嘗試下面的查詢,但發現它乘以totalClients的數量因某些原因:
SELECT businessDetails.name AS businessName
, COUNT(clientDetails.businessDetailsID) AS totalClients
, COUNT(records.businessDetailsID) AS totalRecords
FROM `businessDetails`
INNER JOIN clientDetails
ON clientDetails.businessDetailsID = businessDetails.businessDetailsID
INNER JOIN records ON records.businessDetailsID = businessDetails.ID
GROUP BY
businessDetails.name
ORDER BY
totalClients DESC
這將返回的結果是這樣的:
--------------------------------------------------------
businessName | totalClients | totalRecords
--------------------------------------------------------
Initech | 93 | 93
Cylon Inc | 398 | 398
The Dude Ltd | 215 | 215
我希望我們只是做一些簡單的錯誤。任何幫助將不勝感激。
我認爲這會給你兩個計數的'1'。如果兩個表都有自己的唯一ID,則可以使用`distinct clientdetails.clientid`和`distinct records.recordid`。 – GolezTrol 2010-12-21 19:26:04
你是對的!感謝您指出監督。已經相應地編輯了答案。 – davek 2010-12-21 19:30:01