Home > Backend Development > PHP Tutorial > 怎么样查找同一姓名的数据?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-23 13:38:08
Original
1298 people have browsed it

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;
Copy after login


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


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

GROUP BY xy.name,bj.kemu_1 HAVING COUNT(*)<=1

怎么把这两句合在一起用??

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

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



用这个可以了,但还有两个问题:
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应该怎么改
张龙
张龙
赵虎
赵虎
赵虎
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template