2017-03-08 42 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