2016-03-23 88 views
2

我檢查了很多與相關問題的帖子,但無法找到答案。SQL連接得到的結果沒有連接也

我有2個表有一對多的關係。一個是客戶,另一個是項目。一個客戶可以有很多項目。他們的PK和FK是customer.customer_id和project_customer_id。

現在,當我使用下面的SQL

SELECT *, COUNT(project.project_id) AS totalProjects 
FROM `customer` LEFT JOIN `project` 
ON `project`.`customer_id` = `customer`.`customer_id` 
ORDER BY `customer`.`date_created` DESC 

然而,當我把我所有的客戶現在它只返回裏面居然有一個項目的客戶。我用內,外,左,聯合和右連接,但沒有運氣。我也嘗試DISTINCT,但也沒有工作。

有沒有人有這樣的查詢任何想法,即使他們沒有項目它返回所有客戶?

在此先感謝, 羅德尼

+1

你期待什麼這個查詢? – Avi

+0

您的查詢看起來正確。你可以發佈表結構,數據的一部分,它可能有幫助 – ehh

回答

0

既然你只關心項目的數量,「如果我從你的問題理解正確的」,無論是創建一個功能,讓你這個計數,或寫一個子查詢,如下面的例子...

SELECT 
    *, 
    (
     SELECT COUNT(project.project_id) from project 
     WHERE 
     project.customer_id = customer.customer_id 
    ) AS totalProjects 
FROM 
    customer 
ORDER BY customer.date_created DESC 
+0

謝謝,這正是我想要的 –

0

使用此查詢:

SELECT *, COUNT(project.project_id) AS totalProjects FROM `customer` LEFT JOIN `project` ON `project`.`project_customer_id` = `customer`.`customer_id` GROUP BY `customer`.`customer_id` ORDER BY `customer`.`date_created` DESC 
-1

不是從你的問題不清楚,但我認爲你正試圖列出所有customers如果有任何projects有關聯customer然後列出'項目'的數量?如果這是你的問題,然後下面應該爲您解決:

SELECT *, ISNULL((SELECT COUNT(*) FROM Project WHERE CustomerID = C.CustomerID),0) AS ProjectCount FROM Customer C ORDER BY C.Date_Created DESC