【问题标题】:Get the matching results between two joining tables获取两个连接表之间的匹配结果
【发布时间】:2016-03-12 11:54:16
【问题描述】:

我有一个Enterprise 模型:

name - VARCHAR 255

Candidat 模型:

first_name - VARCHAR 255
last_name - VARCHAR 255

还有一个Type 模型:

name - VARCHAR 255

每个企业都可以选择他们感兴趣的一种或多种类型。每个候选人也可以这样做。

我正在尝试显示与当前登录的企业共享某些类型的所有候选人的列表。 它们不需要完全相同的类型,只需共享其中的一些即可

我正在使用两个连接表来保持候选人和类型、企业和类型之间的链接。

id - INT
candidat_id - INT
type_id - INT

id - INT
enterprise_id INT
type_id INT

这是我目前使用的 SQL 查询:

SELECT candidats.* FROM candidats
    INNER JOIN candidats_types ON candidats_types.candidat_id = candidats.id
    RIGHT JOIN entreprises_types ON entreprises_types.type_id = candidats.type_id
    WHERE entreprises_types.entreprise_id = 1

查询末尾的1是当前登录企业的ID,硬编码用于测试目的。

但是,这不起作用,它返回一个空数组,即使有一些候选人与该企业共享相同的类型。

这个查询我做错了什么?

【问题讨论】:

    标签: mysql join inner-join right-join


    【解决方案1】:

    根据您的表的描述,您的查询应该会产生错误,因为candidate.type_id 不存在。我建议:

    SELECT c.*
    FROM candidats c INNER JOIN
         candidats_types ct
         ON ct.candidat_id = c.id INNER JOIN
         entreprises_types et
         ON et.type_id = ct.type_id
    WHERE et.entreprise_id = 1;
    

    根据您的问题描述,RIGHT JOIN 不是必需的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2021-09-24
      • 2020-09-17
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      相关资源
      最近更新 更多