我用的是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.   

    1.查找参加了职工号为‘1001’的职工所参加的全部社会团体的职工号
    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
      

  2.   


    建议你先自己试着解释一下这个SQL,否则别人也根本不知道你目前已经懂了什么,到什么层次,到底是哪儿不懂。写出你自己的理解,然后让别人来看你的理解是否正确。 否则别人解释过简单你还是理解不了,解释得过细,可能又是根本不必要。INSTR()函数的使用,就参考MYSQL官方文档中的介绍。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html