【问题标题】:MySQL select from 2 tables connected by 3rd (mysql joins)MySQL 从 3rd 连接的 2 个表中选择(mysql 连接)
【发布时间】:2016-04-10 17:50:46
【问题描述】:

我有 2 张桌子,与第 3 张桌子相连

jobs
id, name
---
skills
id, name
---
job_skill
id, job_id, skill_id

每个工作都有很多技能(所以每个技能都有很多工作)。

问题: 如果问我有n 技能,我该如何选择具有这些技能的工作?

例如: 我想找有 CSSJSPHP 技能的工作。

【问题讨论】:

    标签: mysql join inner-join


    【解决方案1】:

    如果您只想获得具有所有 3 项技能的工作,您可以使用类似这样的方法,其中 3 是您的 n 并且技能在 IN 列表中

    SELECT COUNT(j.id) as skillcount,j.id,j.name
    FROM skills s
    INNER JOIN job_skill js ON s.id = js.skill_id
    INNER JOIN jobs j ON js.job_id = j.id
    WHERE s.name IN ('CSS','JS','PHP')
    GROUP BY j.id,j.name
    HAVING COUNT(j.id) = 3
    

    sqlfiddle

    【讨论】:

      【解决方案2】:

      这是一个示例。我已经选择了所有字段,但是您可以将其更改为您想要查看的字段。

      SELECT 
        s.*,
        js.*,
        j.*
      FROM skills s
      LEFT JOIN job_skill js ON s.id = jb.skill_id
      LEFT JOIN jobs j ON j.id = jb.job_id
      WHERE s.name IN ('skill1','skill2','skill3');
      

      【讨论】:

      • 'jb' 必须是 'js' 我认为和 'LEFT' = 'LEFT JOIN'?
      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 2015-05-30
      • 2011-05-17
      • 2013-04-02
      相关资源
      最近更新 更多