【问题标题】:Join multiple table if there are multiple id store in a row如果一行中有多个 id 存储,则加入多个表
【发布时间】:2016-07-28 03:35:53
【问题描述】:

我在数据库中有三个表,分别是技能、工作岗位和经验。在这里,我必须加入所有这些表。

我这里有这样的 job_post 表:

技能表如下:

经验表是这样的

现在,我要加入上面的表。这里我加入了job_post和经验表。

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

"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表加入技能表?

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

但是有什么方法可以写查询而不是做这些?

【问题讨论】:

  • 再加入一次。您可以在一个查询中连接多个表。
  • @Styphon 但多个技能存储在 job_post 表中,那么我如何将 job_post 表与技能表连接起来?

标签: php mysql join


【解决方案1】:

您可以使用 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

【讨论】:

  • 我根据技能获得了多条记录。除了这样做,我们可以约定技能吗?所以我们可以得到单个记录。
  • 感谢它的工作。感谢您让我对mysql有很好的了解
猜你喜欢
  • 2021-10-03
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 2019-03-09
  • 2012-07-10
  • 1970-01-01
相关资源
最近更新 更多