我有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,硬编码用于测试目的。
但是,这不起作用,它返回一个空数组,即使有些候选人与该企业共享相同的类型。
我对这个查询做错了什么?
答案 0 :(得分:0)
根据表格的描述,您的查询应该生成错误,因为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
不是必需的。