我有一个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,用于测试目的进行硬编码。
但是,这不起作用,它返回一个空数组,即使有一些候选对象与此企业共享相同的类型。
这个查询有什么问题吗?
发布于 2015-12-07 19:39:39
根据对表的描述,您的查询应该生成一个错误,因为不存在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是不必要的。
https://stackoverflow.com/questions/34141029
复制相似问题