首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取两个连接表之间的匹配结果

获取两个连接表之间的匹配结果
EN

Stack Overflow用户
提问于 2015-12-07 18:54:30
回答 1查看 16关注 0票数 0

我有一个Enterprise模型:

代码语言:javascript
复制
name - VARCHAR 255

一个Candidat模型:

代码语言:javascript
复制
first_name - VARCHAR 255
last_name - VARCHAR 255

和一个Type模型:

代码语言:javascript
复制
name - VARCHAR 255

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

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

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

代码语言:javascript
复制
id - INT
candidat_id - INT
type_id - INT

id - INT
enterprise_id INT
type_id INT

下面是我目前使用的SQL查询:

代码语言:javascript
复制
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,用于测试目的进行硬编码。

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

这个查询有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-07 19:39:39

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

代码语言:javascript
复制
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是不必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34141029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档