sql查询语句(急..)
发布网友
发布时间:2022-04-11 08:13
我来回答
共3个回答
热心网友
时间:2022-04-11 09:43
补充:
1。班级编号 班级名 班级代码 仅参加乒乓球人数(Ping) 仅参加羽毛球人数(Yu) 既参加乒乓球又参加羽毛球人数(PingYu)。
select 班级编号,班级名,a.班级代码,(select count(*) from table2 b where b.班级代码=a.班级代码)as Ping,(select count(*) from table3 c where c.班级代码=a.班级代码)as Yu,(select count(*) from table2 b,table3 c where b.班级代码=a.班级代码 and c.班级代码=a.班级代码 and b.身份证=c.身份证)as PingYu from table1 a
分析:当table2,table3两个表中的身份证相同时说明他既参加乒乓球又参加羽毛球人员
2。得到每个班级仅参加乒乓球人员,仅参加羽毛球人员,和既参加乒乓球又参加羽毛球人员应该怎么设计表格,怎么做查询
表格设计:
班级代码 班级名 姓名 身份证 参加乒乓球(Ping)(boolean) 参加乒乓球(Yu)(boolean)
注释 都为true时表示:既参加乒乓球又参加羽毛球
select a.班级代码,a.班级名,b.姓名,b.身份证,(select true) as Ping,(select b.name in(select name from table3)) as Yu from table1 a,table2 b where a.班级代码=b.班级代码 UNION
select a.班级代码,a.班级名,c.姓名,c.身份证,(select c.name in(select name from table2)) as Ping,(select true) as Yu from table1 a,table3 c where a.班级代码=c.班级代码
------------------------有问题伐消息我------------------
热心网友
时间:2022-04-11 11:01
给你一个思路,先查询分别只在两个社团的人,再查询两个社团都有的人,
以班级编号关联为例:比如我找13班的只参加乒乓球的人数: select count(姓名) as num from table2 where 班级代码=13 and 姓名 not in (select 姓名 from table3 where 班级代码='13')
再查找13班参加两个社团的人数
select count(姓名) as num from table2 where 班级代码=13 and 姓名 in (select 姓名 from table3 where 班级代码='13')
查询只参加羽毛球的人数
select count(姓名) as num from table3 where 班级代码=13 and 姓名 not in (select 姓名 from table2 where 班级代码='13')
大体思路是这样,具体的需要你自己去修改一下~~~
热心网友
时间:2022-04-11 12:35
select 班级编号,班级名,a.班级代码,
(select count(*) from table2 b where b.班级代码=a.班级代码)as 仅参加乒乓球人数,
(select count(*) from table3 c where c.班级代码=a.班级代码)as 仅参加羽毛球人数,
(select count(*) from table2 d,table3 e where d.班级代码=a.班级代码 and e.班级代码=a.班级代码)as 既参加乒乓球又参加羽毛球人数
from table1 a
以上SQL语句用了关联子查询,我想应该能看得清楚,知道意思吧。