2017-03-08 39 views
0

我有兩個表,並希望加入他們兩個。然後,如果表A中的一個或多個數據在表B上具有相同的ID,那麼我想從表B中計算總計結果。下面是示例。MySQL內部加入2表和計數表2按ID從表1

enter image description here

enter image description here

enter image description here

我已經嘗試這樣的,但只給我兩個結果,不喜歡什麼,我想:

SELECT 
table_a.*, 
table_b.*, 
count(*) as total 
FROM 
    table_a, 
    table_b 
WHERE 
    table_b.id_tblA = table_a.id_tblA 
GROUP BY 
    table_b.id_tblB 
+0

你需要'集團BY' –

+0

@ PM77-1我已經嘗試GROUP BY,但仍然不適合我 –

+0

工作的內部聯接不會返回指定的結果。我們可以使用一個外部聯接,一個組和一個聚合(計數或總和)。作爲另一種選擇,我們可以在選擇列表中使用相關的子查詢。 – spencer7593

回答

1

試試這個

SELECT 
    table_a.id_tblA, table_a.tblA_name, 
    (SELECT count(*) FROM table_b WHERE table_b.id_tblA = table_a.id_tblA) 
FROM 
    table_a; 
1

你應該使用左連接和案例時

SELECT 
    table_a.id_tblA, 
    table_a.Name, 
    sum(case when table_b.id_tblB is null then 0 else 1 end) total 
    FROM table_a 
    left join table_b on table_b.id_tblA = table_a.id_tblA 
    group by table_a.id_tblA, table_a.Name 
+3

'left join'後缺少'table_b on' – SqlZim

+0

嘗試添加缺少的'table_b',但仍然不適用於我 –

+0

@JhonnyJr。 :也改變了選擇列表中的第三個表達式....'SUM(CASE WHEN table_b.id_tblB IS NULL THEN 0 ELSE 1 END) – spencer7593