我用的是MySQL 5.1设职工_社团数据库有三个基本表:职工(职工号,姓名,年龄,性别); //职工号为主码
社会团体(编号,名称,负责人,活动地点); //编号为主码,负责人为外码,被参照表为职工表,对应职工号
参加(职工号,编号,参加日期); //职工号和编号为主码,职工号为外码,参照职工表,对应职工号;编号为外码,参照社会团体表,对应编号1.查找参加了职工号为‘1001’的职工所参加的全部社会团体的职工号
2.求参加人数最多的社会团体的名称和参加人数
3.求参加人数超过100人的社会团体的名称和负责人另:帮我解释下这个句子:delete a from tb a,(select step from tb where ID=431) b where instr(a.Step,b.Step)=1 ;
instr的用法我不会
麻烦各位大侠了。。小弟感激不尽。
社会团体(编号,名称,负责人,活动地点); //编号为主码,负责人为外码,被参照表为职工表,对应职工号
参加(职工号,编号,参加日期); //职工号和编号为主码,职工号为外码,参照职工表,对应职工号;编号为外码,参照社会团体表,对应编号1.查找参加了职工号为‘1001’的职工所参加的全部社会团体的职工号
2.求参加人数最多的社会团体的名称和参加人数
3.求参加人数超过100人的社会团体的名称和负责人另:帮我解释下这个句子:delete a from tb a,(select step from tb where ID=431) b where instr(a.Step,b.Step)=1 ;
instr的用法我不会
麻烦各位大侠了。。小弟感激不尽。
select *
from 职工 a
where not exists (
select 1
from 参加 b
where 职工号='1001'
and not exists (select 1 from 参加 where 职工号=a.职工号 and 编号=b.编号)
)2.求参加人数最多的社会团体的名称和参加人数
select a.名称,count(*)
from 社会团体 a,参加 b
where a.编号=b.编号
group by 编号
order by 2 desc
limit 13.求参加人数超过100人的社会团体的名称和负责人
select a.名称,b.姓名
from 社会团体 a, 职工 b
where a.负责人=b.职工号
and (select count(*) from 参加 where 编号=a.编号)>100
建议你先自己试着解释一下这个SQL,否则别人也根本不知道你目前已经懂了什么,到什么层次,到底是哪儿不懂。写出你自己的理解,然后让别人来看你的理解是否正确。 否则别人解释过简单你还是理解不了,解释得过细,可能又是根本不必要。INSTR()函数的使用,就参考MYSQL官方文档中的介绍。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html