我正在尝试做一个相当复杂的(对我来说)嵌套查询。我的数据分为三个表:
所以我想运行一个列出三件事的查询 - 网站名称,网站中房间的数量以及该网站上的计算机数量。
目前,我的查询如下:
SELECT siteid, sitename, (SELECT Count(*) FROM tblroom WHERE roomsite LIKE siteid) as
siteroomcount, .....
.....指示计算机计数的子查询需要去的位置。它需要以某种方式为站点中的每个房间运行子查询,并使用辅助子查询来计算该站点的每个房间中的计算机。我希望这是有道理的。
提前谢谢!
-Scott Davis
答案 0 :(得分:0)
我会告诉你一个例子,所以我认为你可以根据自己的情况进行推断
让我们说我们有类似的东西
create table site (sid int);
create table room (rid int, sid int);
create table comp (cid int, rid int);
insert into site values (1);
insert into site values (2);
insert into site values (3);
insert into room values (33,1);
insert into room values (44,1);
insert into room values (55,2);
insert into comp values (666,33);
insert into comp values (777,33);
insert into comp values (888,44);
insert into comp values (999,55);
然后这个查询
SELECT s.sid,
Count(DISTINCT( r.rid )),
Count(DISTINCT( c.cid ))
FROM site s
left outer join room r on s.sid = r.sid
left outer join comp c on r.rid = c.rid
GROUP BY s.sid
会给你
SID COUNT(DISTINCT(R.RID)) COUNT(DISTINCT(C.CID))
1 2 3
2 1 1
3 0 0