2015-12-07 112 views
0

之间的匹配结果我有一个Enterprise型号:得到两个连接表

name - VARCHAR 255 

一个Candidat型号:

first_name - VARCHAR 255 
last_name - VARCHAR 255 

并有Type模型:

name - VARCHAR 255 

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

我想显示所有与企业当前登录共享某些类型的candidats的列表。 他们不需要有完全相同的类型,只是分享其中一些

我使用两个加入表来保持候选人和类型以及企业和类型之间的联系。

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 

的在查询的结尾是当前登录的企业,硬编码的ID测试目的。

然而,这是不行的,它返回一个空数组,即使有部分考生共享相同的类型,这家企业。

我在做这个查询有什么问题?

回答

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是没有必要的。