Sql语句始终学得不对劲,只会一些常规的简单操作,一旦复杂了就不知所措了,现在就遇到一个对我来说太复杂的Sql语句
具体情况如下:
我有三张表,一个是考题A表,一个是答案选项B表,一个是回答选择C表。
A:
AID,Title (题号ID,题内容)
B:
BID,AID,Title (选项ID,题号ID,选项描述)
C:
CID,AID,BID (回答ID,题ID,选项ID) 我的问题是,我想得到各题中各选项有多少人选择。
我要的结果如下: AID,Bid,Num (第AID题的BID选项有Num个人选择了此项) 不知我描述得清楚不?请高人给予解答一下啊
具体情况如下:
我有三张表,一个是考题A表,一个是答案选项B表,一个是回答选择C表。
A:
AID,Title (题号ID,题内容)
B:
BID,AID,Title (选项ID,题号ID,选项描述)
C:
CID,AID,BID (回答ID,题ID,选项ID) 我的问题是,我想得到各题中各选项有多少人选择。
我要的结果如下: AID,Bid,Num (第AID题的BID选项有Num个人选择了此项) 不知我描述得清楚不?请高人给予解答一下啊
group by AID,BID
按照我的理解 只需查询 c表就可以吧
select * from c where AID ='' and CID=BID
select (select a.Title from A a where a.AID=b.BID) as question,b.Title as answer,(select sum(c.CID) from C c where c.BID=b.BID) as count
from B b试试看,有语法错误自己改下
A:
AID,Title (题号ID,题内容)
B:
BID,AID,Title (选项ID,题号ID,选项描述)
C:
CID,AID,BID (回答ID,题ID,选项ID)
要取得C表中选择各题的数量,用如下SQL即可解决:
SELECT a.AID,b.Bid,Count(C.CID) Num FROM C c WHERE c.AID in(SELECT B.AID FROM B b, C c WHERE a.AID=b.AID)
select a.aid,b.bid,count(c.cid) cnt
from a
inner join b on
b.aid=a.aid
inner join c on
c.bid=b.bid
group by
a.aid,b.bid
希望有用~
group by fbtID,Opid
二楼的这一句是对的。但是我想要的结果是:
a.title,b.title,count(c.opid)这样的,我怎么试都不行呢?
有什么好办法吗?
inner join A on A.AID=C.AID
inner join B on B.BID=C.BID另外使用Group by时的要求就是,除了聚合函数,select中的字段必须出现在group by中。
意思就是要select a.title,b.title 就必须group by a.title,b.title完整的句子你自己可以试着拼一下。SQL Server联机丛书里面应该都有例子。
如果不行 你可以自己调整下。。大概是这个意思
select ab.atitle,ab.btitle,count(c.ID) as num from(select a.ID as aid,b.ID as bid, a.VoteTitle as atitle ,b.VoteAnswer as btitle from VoteEvent as a left join VoteOption as b on a.ID=b.VoteID group BY a.ID,b.ID,a.VoteTitle,b.VoteAnswer )as ab left join VoteDetail as c on c.VoteOpID=ab.bid group by ab.atitle,ab.btitle
语句结尾可以写个order by ab.atitle 这样排一下 因为我在做查询的时候数据发现数据出来了 可是有点乱