这么简单的问题,2天了没人能解决吗?
有两张表
a id(KEY),name
b id(KEY),a_id,name
如何查找table_a的所有字段,以及每一个table_a中id的对应table_b中记录的条数
查找结果如:
table_a.id,table_b.name,count(table_b.*)
1 苹果 5
2 香蕉 6
3 桔子 0 (关键是这条记录显示很难实现)
谢谢!!
select table_a.id,tablea.name.,count(table_a.id) from table_a,table_b where table_a.id = table_b.a_id group by table_a.id,table_a.name
这样找出来就第一和第二条记录,第三条找不出来
问题点数:5、回复次数:8Top
1 楼LaoDai_Net(『老代』)回复于 2005-06-04 12:51:54 得分 0
SELECT id, name,(select count(id) from b where a_id = a.id)
FROM aTop
2 楼LaoDai_Net(『老代』)回复于 2005-06-04 12:53:21 得分 0
ALTER PROCEDURE dbo.StoredProcedure16
/*
(
@parameter1 datatype = default value,
@parameter2 datatype OUTPUT
)
*/
AS
/* SET NOCOUNT ON */
SELECT id, name,(select count(id) from b where a_id = a.id) countnum
FROM a
RETURN
运行结果
运行dbo."StoredProcedure16".
id name countnum
----------- -------------------------------------------------- -----------
1 asdsdf 2
2 gsdgdg 3
3 shghdgh 1
没有更多的结果。
(返回 3 行)
@RETURN_VALUE = 0
完成 dbo."StoredProcedure16" 运行。Top
3 楼syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)回复于 2005-06-04 12:58:28 得分 0
这不是有人解决了么???
楼主,以后问问题最好在题目里简要说明,用这样的题目不太好吧???
还有,没有人替你解决大部分情况下是你的问题问的太模糊大家不知道你在说什么,还有是你选在半夜问问题或把VB的问题发到SqlServer去了。。。
很少是“没人能解决”的。
没人回答应该先检讨自己是不是“会问”。Top
4 楼czsxj(知道一点)回复于 2005-06-04 13:00:56 得分 1
SELECT table_a.id,tablea.name, COUNT(table_a.id) AS count
FROM table_a LEFT OUTER JOIN
table_b ON table_a.id = table_b.a_id
GROUP BY dbo.tablea.id, dbo.tablea.nameTop
5 楼yy611612(露珠儿(抵制日货!!))回复于 2005-06-04 13:26:10 得分 0
学到,谢谢!Top
6 楼grayhoundd(斜塘西马)回复于 2005-06-04 17:38:28 得分 0
不对,都没有解决,第三条记录,count(table_b.*)是""""0""""",有记录是可以查找出来的,如2楼,但是如果桔子对应的条数是0,则查找结果是:
1 苹果 5
2 香蕉 6
而不是
1 苹果 5
2 香蕉 6
3 桔子 0
这区别很大,知道吗?Top
7 楼ofei(nop)回复于 2005-06-04 19:04:01 得分 3
select table_a.id,table_a.name,count(table_b.id) from table_a left outer join table_b on table_a.id = table_b.a_id group by table_a.id,table_a.name
or
select table_a.id,table_a.name,sumTable.count from table_a left outer join (select a_id,count(a_id) from table_b group by a_id) sumTable on table_a.id = sumTable.a_idTop
8 楼sugarsupper(智慧之刃)回复于 2005-06-04 22:52:11 得分 1
select *,count(*) as records from b where a_id in
( select distint(id) from a )Top




