2016-07-24 16 views
1

我想加入3個表格並獲得每個聯繫人案例的計數。到目前爲止,我已經寫了這個查詢,但結果顯示我有聯繫誰有案件。我想要一個新的列,它會顯示每個聯繫人的「案例數」,因此結果應該是3行3列(最後一列是個案數)如何通過在sql上連接3個表來插入行數?

表A(聯繫人)

+-----------------------+----+---------------------------------+ 
| Name     | id | Organization     | 
+-----------------------+----+---------------------------------+ 
| Heidi Wilson-Reynolds | 2 | Alabama Arts Services   | 
+-----------------------+----+---------------------------------+ 
| Dr. Andrew Zope  | 3 | Connecticut Empowerment Academy | 
+-----------------------+----+---------------------------------+ 
| Rolando Cooper Sr. | 8 | Dutton Advocacy Trust   | 
+-----------------------+----+---------------------------------+ 

表B(情況聯繫人)

+----+---------+------------+ 
| id | case_id | contact_id | 
+----+---------+------------+ 
| 1 | 1  | 2   | 
+----+---------+------------+ 
| 2 | 2  | 3   | 
+----+---------+------------+ 
| 3 | 3  | 8   | 
+----+---------+------------+ 
| 4 | 4  | 2   | 
+----+---------+------------+ 
| 5 | 5  | 3   | 
+----+---------+------------+ 
| 6 | 6  | 8   | 
+----+---------+------------+ 

表C(例)

+----+-----------+ 
| id | status_id | 
+----+-----------+ 
| 1 | 1   | 
+----+-----------+ 
| 2 | 1   | 
+----+-----------+ 
| 3 | 1   | 
+----+-----------+ 
| 4 | 1   | 
+----+-----------+ 
| 5 | 1   | 
+----+-----------+ 
| 6 | 1   | 
+----+-----------+ 

曲兒Y:

SELECT 
    A.display_name AS 'Name', 
    A.organization_name AS 'Organization' 
FROM 
    A 
     INNER JOIN 
    B ON A.id = B.contact_id 
     INNER JOIN 
    C ON B.case_id = C.id 
WHERE 
    A.contact_type = 'Individual' and C.status_id = 1; # Case status 1 is "Ongoing" 

結果:

+-----------------------+---------------------------------+ 
| Name     | Organization     | 
+-----------------------+---------------------------------+ 
| Heidi Wilson-Reynolds | Alabama Arts Services   | 
+-----------------------+---------------------------------+ 
| Dr. Andrew Zope  | Connecticut Empowerment Academy | 
+-----------------------+---------------------------------+ 
| Rolando Cooper Sr. | Dutton Advocacy Trust   | 
+-----------------------+---------------------------------+ 
| Heidi Wilson-Reynolds | Alabama Arts Services   | 
+-----------------------+---------------------------------+ 
| Dr. Andrew Zope  | Connecticut Empowerment Academy | 
+-----------------------+---------------------------------+ 
| Rolando Cooper Sr. | Dutton Advocacy Trust   | 
+-----------------------+---------------------------------+ 

這是結果,我想它表明,我想我需要使用COUNT()函數:

+-----------------------+---------------------------------+-----------------+ 
| Name     | Organization     | number_of_cases | 
+-----------------------+---------------------------------+-----------------+ 
| Heidi Wilson-Reynolds | Alabama Arts Services   | 2    | 
+-----------------------+---------------------------------+-----------------+ 
| Dr. Andrew Zope  | Connecticut Empowerment Academy | 2    | 
+-----------------------+---------------------------------+-----------------+ 
| Rolando Cooper Sr. | Dutton Advocacy Trust   | 2    | 
+-----------------------+---------------------------------+-----------------+ 
+0

我刪除基於MySQL Workbench標記的SQL Server標記。 –

回答

1

使用組..在你的情況下,你有三個不同的值(名稱,組織)

group by子句返回這三個不同的行。ad爲每個行計數具有相同值的名稱和組織的行數。

在你品嚐所有三個值(姓名,單位)有2行,每行..

看到這短暫教程聚合功能

http://www.w3schools.com/sql/sql_functions.asp

http://www.sql-tutorial.com/sql-aggregate-functions-sql-tutorial/

+0

duhh,我忘了添加Group By ..感謝它的工作! :) – Hashim77

+0

你能解釋爲什麼你使用(*)計數? – Hashim77

+0

@ Hashim77,感謝分組... by ...添加了.. count(*)是conting row的聚合函數..並且基於按分組分列的工作... hope is clear ..否則問我。 。再次 – scaisEdge

0

使用GROUP BY NAME,ORGANIZATION並使用此查詢的輸出對結果進行計數。基本上,您可以在另一個SELECT語句此輸出由

SELECT 
     A.display_name AS 'Name', 
     A.organization_name AS 'Organization', 
     count(*) AS 'number_of_cases' 

    FROM 
     A 
      INNER JOIN 
     B ON A.id = B.contact_id 
      INNER JOIN 
     C ON B.case_id = C.id 
    WHERE 
     A.contact_type = 'Individual' and C.status_id = 1; # Case status 1 is "Ongoing" 
    GROUP BY A.display_name, A.organization_name 

的COUNT(*)計算匹配由列分組的相同值,該行的數量來獲得期望的結果

相關問題