Heim >Backend-Entwicklung >PHP-Tutorial >怎么样查找同一姓名的数据?

怎么样查找同一姓名的数据?

WBOY
WBOYOriginal
2016-06-23 13:38:081289Durchsuche

a表:
id       name      banji_id               //banji_id即为b表的id
1         张龙          1
2         张龙          2
3         李四          1
3         李四          5
5         王五          3
6         赵虎          2
7         赵虎          1
8         赵虎          4

b表:
id          km             sj1          sj2
1        珠心算        2015      春季
2           口才         2015      春季
3          作文          2015      春季
4          数学          2015      春季
5          英语          2014      秋季

张龙是在2015春季学了珠心算和口才;
赵虎是在2015春季学了珠心算和口才和数学;
李四是在2014秋季学的英语,2015春学的珠心算;
我想做一个按纽,点击后搜索出张龙、赵虎(即在同一期学多科的学员);
而李四虽然是不同科目,但李四由于是不同学期,所以不在显示之列


回复讨论(解决方案)

select name from (select a.*, b.km, b.sj1, b.sj2, count(*) as cou from a join b on a.banji_id = b.id group by name, sj1, sj2) as c where cou >= 2;


不知道有没有更简单的方法。。


GROUP BY xy.name,bj.shijian_1,bj.shijian_2 HAVING COUNT(*)>1

GROUP BY xy.name,bj.kemu_1 HAVING COUNT(*)
怎么把这两句合在一起用??

select a.id, name from a, b where a.banji_id=b.id group by name,sj1,sj2 having count(*) > 1

select a.id, name from a, b where a.banji_id=b.id group by name,sj1,sj2 having count(*) > 1



用这个可以了,但还有两个问题:
1、在分页时显示不正确,
function get_xueyuan_count($duoke.......省略)
{
global $fdyu,$db;
        ......省略
        if($duoke!=0)
{
$sql_where .= " and xy.cur_banji_id=bj.banji_id group by xy.name,bj.shijian_1,bj.shijian_2 having count(*) > 1";
}
        $sql = "SELECT COUNT(distinct xy.xy_id) FROM ".$fdyu->table('oa_xueyuan')." as xy left join 
".$xfsql.
$fdyu->table('oa_banji') . " as bj on bj.banji_id=xy.cur_banji_id left join ".
$fdyu->table('oa_banji') . " as bj_1 on bj_1.banji_id=xy.pre_banji_id 
".$xiashu.
$sql_where;
        $count = $db->getOne($sql);
        return $count;
}

function get_xueyuan_list($duoke.......省略)
{
        global $fdyu,$db;
        ......省略
        if($duoke!=0)
{
$sql_where .= " and xy.cur_banji_id=bj.banji_id group by xy.name,bj.shijian_1,bj.shijian_2 having count(*) > 1";
}
        $sql = "SELECT COUNT(distinct xy.xy_id) FROM ".$fdyu->table('oa_xueyuan')." as xy left join 
".$xfsql.
$fdyu->table('oa_banji') . " as bj on bj.banji_id=xy.cur_banji_id left join ".
$fdyu->table('oa_banji') . " as bj_1 on bj_1.banji_id=xy.pre_banji_id 
".$xiashu.
$sql_where;
        $res = $db->selectLimit($sql, $size, ($page-1) * $size);
$arr = array();
        if ($res)
        {
while ($row = $db->fetchRow($res))
               {
                      ......省略
               }
        }
}

2、我想把学多科的名单都显示,这句 and xy.cur_banji_id=bj.banji_id group by xy.name,bj.shijian_1,bj.shijian_2 having count(*) > 1应该怎么改
张龙
张龙
赵虎
赵虎
赵虎
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn