2010-10-23 62 views
0
a table 
a_id a_value 
1 text1 
2 test2 

b table 
b_id b_num a_id 
1 5  1 
2 7  1 
3 2  1 
4 7  2 
5 56 2 

结果基础的表(编辑)MySQL的2个表查询问题

A_ID:1 a_value:text1的总数:3条记录

A_ID:2 a_value:text2的总数:2条记录

如何在sql中获取这种格式?

查询表,添加一个字段(总)计数b.a_id = a.a_id表B

谢谢你..

+0

根据你在表格b中的数据,你如何得到以下结果:a_id:2 total:2 records'? – InSane 2010-10-23 07:27:12

+0

你是如何得到3条和2条记录的?你确定b表数据是正确的吗? – 2010-10-23 07:27:36

+0

你想获得'b_id'的数量吗? – JoshD 2010-10-23 07:27:38

回答

0

你可以试试:

SELECT a.a_id AS id, a.a_value AS value, (SELECT count(b.b_id) AS count FROM b WHERE (b.a_id = a.a_id)) AS total FROM a GROUP BY a.a_id 

那么结果使用从表一个b数据的例子:

**id value  total** 

    1  text1  3 

    2  text2  2 
+0

谢谢!Nervo Verdezoto – love 2010-10-23 09:35:51

0

我想象你在b表中有一个错误,所以我会假设你叫什么b_id实际上是a_id,或者您的结果将是错误的

反正你可以使用:

SELECT COUNT(b.a_id) AS total FROM b GROUP BY (SELECT a.a_id FROM a) 
    ORDER BY b.a_id 
0

更新查询基于变化的问题

SELECT a_id, a_value, x.total 
FROM a 
INNER JOIN 
    (SELECT b.a_id, COUNT(1) AS total 
    FROM b 
    GROUP BY (b.a_id)) X 
ON a.a_id = x.a_id 
ORDER BY a.a_id 
+0

@LXXA - 我已更新查询。我认为这应该按照更新后的问题 – InSane 2010-10-23 07:44:26