php - 如果一行中有多个id存储,则连接多个表

标签 php mysql join

我在数据库中有三个表,分别是 skill、job_post 和 experience。在这里,我必须加入这些所有表。

我这里有这样的 job_post 表:

enter image description here

技能表如下:

enter image description here

经验表看起来像

enter image description here

现在,我必须加入上面的表。这里我加入了 job_post 和 experience 表。

所以我写了这样的连接查询:

"select * from job_post as jp 
  join experience as e on e.exp_id = jp.exp_id
  where jp.emp_id in (".$ids.")"

但是,这里在 job_post 表中插入了多个 skill_id,那么我如何将 job_post 表连接到 skill 表呢?

注意:我试过的是,我在上面写了连接查询,然后写了该结果的 foreach 循环,并从 job_post 表中获取技能 ID。然后写了与技能表匹配的查询,并且打印技巧。

但是有什么方法可以编写查询而不是执行这些操作吗?

最佳答案

您可以使用 MySQL find_in_setgroup_concat 进行第三次连接:

select jp.*,e.*,group_concat(s.skill)
from job_post jp 
join experience e on e.exp_id = jp.exp_id
join skill s ON(FIND_IN_SET(s.skill_id, jp.skill) > 0)
where jp.emp_id in (".$ids.")
GROUP BY jp.job_id,jp.exp_id

关于php - 如果一行中有多个id存储,则连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36473048/

相关文章:

php - 在 Laravel 5.1 中使用中间件时出现 Class jwt-auth does not exist 错误

php - 如何确定特定资源是否有数据

MySQL - 相关子查询失败,where 子句中的列未知

mysql - 按特定顺序从 MySQL 中检索记录

php - 在没有 PHP 框架的情况下,如何以 MVC 模式编写 Controller ?

php - 内部服务器错误 500 仅适用于通过 ftp 传输的文件而不适用于本地创建的文件,运行 ubuntu 服务器 16.04

php - 在 Codeigniter 2.0.2 中安装插件

mysql - 如何连接多个关系表并按类型获取结果

mysql - 用 SQL JOIN 替换列

mysql - SQL 加入聚合