求:SQL联表查询代码

来源:百度知道 编辑:UC知道 时间:2024/06/06 17:01:34
两张表
A表:ID 姓名 性别 籍贯 生日 手机
1 张三 男 龙江 1981.5.6 138XXXXX
2 周六 女 北海 1985.3.5 135XXXXX
3 刘七 男 山北 1980.2.11 131111111
4 王五 男 沟南 1975.2.29 130142511

B表: id 姓名 活动名称 活动时间 出席 事假 病假 缺席
1 王五 A饭 2009.7.6 是
2 周六 A饭 2009.7.6 是
3 刘七 A饭 2009.7.6 是
4 王五 K歌 2009.8.11 是
5 周六 K歌 2009.8.11 是
我要查询:2009年活动到席两次以上的人员的姓名\性别\籍贯\生日等信息.
SQL查询语句该如何写?
A表姓名与B表姓名是主键,A对B是一对多关系

另,不是两次以上,而是两次或三次或N次

select A.*
from A,(select count(*) num,姓名 from B group by 姓名 having num>1) tmp
where A.姓名=tmp.姓名

select a.姓名,a.性别,a.籍贯,a.生日,a.手机 from A表 a inner join
(select 姓名,活动名称,count(*) as 活动次数 from B表 where 活动时间 between '2009-1-1' and '2009-12-31' and 出席='是' group by 姓名,活动名称 having count(*)>=2) b
on a.姓名=b.姓名

以上,希望对你有所帮助!

select
a.姓名,
a.性别,
a.籍贯,
a.生日,
b.出席次数
from (
select B.姓名,
count(*) as 出席次数
from B
where B.出席='是'
group by B.姓名
having(count(*)>1
) b left outer join A a on b.姓名=a.姓名