php - 显示一对多关系

标签 php mysql

我有两张 table 1. 员工 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

在员工表中 id 是主键,在联系人表中 emp_id 是员工表的外键

需要的输出是,

 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'];
 }

最佳答案

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

关于php - 显示一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505251/

相关文章:

php - Laravel Authorize() 混淆

PHP - 合并具有相同键值的数组

php - 跨多列计数

python - 在 SELECT 语句后获取数组

字符串第一部分的 MySQL 索引

php - SQL 结果截断第一个结果

mysql - 大型分析数据库响应式检索 (MYSQL)

php - db 获取数组 drupal 7

php - Docker:不同端口上的多个 PHP7-FPM 容器

mysql - 带触发器的嵌套选择内部插入