MySQL - 从另一个表中选择多个值时,在关系表上计数(*)?

时间:2013-04-17 19:06:18

标签: mysql relational-database

我有两张桌子,T1和T2。

T1包含A1,B1和C1列。 A1是T1的唯一索引。

T2包含A1列和awesome_data列。 A1在此表中不是唯一的。该表为每个A1保留了许多行“awesome_data”。我需要一个查询返回T1中的所有信息和T2中A1的出现的COUNT。

所以,如果我有这个:

T1:
row(A1 = 1, B1 = 'monkey', C1 = 'horsies'),
row(A1 = 2, B1 = 'super mario', C1 = 'satan'),
row(A1 = 3, B1 = 'monkey', C1 = 'hello world')

T2:
row(A1 = 2, awesome_data = 'adsfasd22f32'),
row(A1 = 1, awesome_data = '3f23fsf3a3'),
row(A1 = 1, awesome_data = 'f3af3afaa3fa2')

我需要一个查询结果:

enter code here

array(
0 => array('A1'=>1,'B1'=>'monkey','C1'=>'horsies','T2_count'=>2),
1 => array('A1'=>2,'B1'=>'super mario','C1'=>'satan','T2_count'=>1),
2 => array('A1'=>3,'B1'=>'monkey','C1'=>'horsies','T2_count'=>0)
);

有什么建议吗?我试图尽可能清楚地说明这一点。我不熟悉沟通关系表概念的正确方法。

1 个答案:

答案 0 :(得分:0)

SELECT
    T1.*,
    COUNT(T2.A1) AS `Total`
FROM T1
LEFT JOIN T2 ON T1.A1 = T2.A1
GROUP BY T1.A1

以下是

SQL Fiddle Demo