2015-12-07 144 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是沒有必要的。