2016-03-23 11 views
2

関連する質問が多い投稿をチェックしましたが、回答が見つかりませんでした。SQL join join as wellの結果が得られません

私は1対多の関係を持つ2つのテーブルを持っています。 1つは顧客で、もう1つはプロジェクトです。ある顧客は多くのプロジェクトを持つことができます。 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次に、 'projects'の数を列挙しますか? 「私はあなたの質問から正しく理解している場合、」あなただけのプロジェクトの数に関係しているのでどちらか、

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