显示一对多的关系

时间:2014-05-06 21:59:16

标签: php mysql

我有两张桌子 员工 2.联系人

 employees
 id    name
  1    Smith
  2    Ken
  3    Tim

 contacts
  id         phone          emp_id
   1         431-1234          1
   2         431-5678          1
   3         431-3421          2

在employees表中,id是主键,在contacts表中,emp_id是employees表的外键

需要输出,

 Name       Contacts
 Smith      431-1234, 431-5678

当我尝试时,

 SELECT * FROM employees e, contacts c WHERE e.id=emp_id

我重复了名字。

 $q = mysql_query("SELECT * FROM employees e, contacts c WHERE e.id=emp_id");
 while($r = mysql_fetch_assoc($q)) {
    echo $r['name'] .' '. $r['phone'];
 }

2 个答案:

答案 0 :(得分:3)

group bygroup_concat结合使用:

select e.name, group_concat(c.phone separator ', ') phone
from employees e inner join contacts c on e.id = c.emp_id 
group by e.id

答案 1 :(得分:-1)

您可以使用此查询:

select a.name,group_concat(b.phone separator ', ') as contacts
from employees a join contacts b
on a.id = b.emp_id

这是因为您只想显示2列,而您现在正在做的是显示“全部”