编号 名字
1 张三
2 李四
3 王五
4 马六
5 陈七
这是人员表。编号 打人者 被打者
1 张三 李四
2 李四 王五
3 张三 王五
4 陈七 张三
5 马六 张三
6 李四 王五
7 张三 陈七
这是打架表
关联查询出这样的结果:
 姓名 打人次数 被打次数
 张三 3 2大侠们觉得该咋样写呀?

解决方案 »

  1.   

    select a.名字,
    (select count(*) from 打架表 where a.名字=打人者) as 打人次数,
    (select count(*) from 打架表 where a.名字=被打者) as 被打次数
    from 人员表 a where a.名字='张三' group by a.名字
      

  2.   

    表的连接查询
    select a.姓名,count(b.打人者) as '打人次数',count(b.被打者) as '被打次数'
    from 人员表 a,打架表 b
    where a.number=b.number
      

  3.   

    SELECT *,
    (SELECT COUNT(*) FROM `打架表` WHERE `人员表`.`名字`=`打架表`.`打人者`) AS '打人次数',
    (SELECT COUNT(*) FROM `打架表` WHERE `人员表`.`名字`=`打架表`.`被打者`) AS '被打次数'  
    FROM `人员表`