作者On1earth (小浅)
看板Database
标题[SQL ] 子查询 INNER JOIN + WHERE
时间Mon Oct 3 01:18:57 2011
资料库是 Access 2000
请问各位大大,有三个资料表
Group (纪录群组)
GroupId GroupName UserId
1 群组一 0
2 群组二 1
Msg (纪录讯息)
MsgId MsgTitle UserId
1 讯息一 0
2 讯息二 2
GroupMsg
MsgId GroupId
1 1 (讯息一是群组一)
2 1 (讯息二是群组一)
我想要统计每个Group各有多少则讯息,而且必须Group.UserId=Msg.UserId
以上面来说,我要的结果是
群组一总共有1则 (因为MsgId=2的Group.UserId不等於Msg.UserId,不算)
群组二总共有0则
SELECT Group.GroupName,
(
SELECT COUNT(*)
FROM GroupMsg INNER JOIN Msg
ON GroupMsg.MsgId = Msg.MsgId
WHERE GroupMsg.GroupId = Group.GroupId
)
FROM Group
这是我下的SQL,会出现「无效的运算」,
我试过把子查询那段 WHERE 拿掉就没错误,但是这样算的是GroupMsg的总笔数,
或者把子查询的 INNER JOIN 就可以用 WHERE,但是我要结合Msg表看UserId,
请问各位大大要怎麽取得我想要的结果?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.70.99