2014-02-26 77 views
0

我對小組和類別兩個表我想返回的組和排除不具有任何這裏類別的那些羣體類別存在是我寫的SQL:獲取記錄僅當它加入記錄在其他表

SELECT 
    cat_group.subject as group_name , spcat . * 
FROM 
    special_event_groups AS cat_group 
     LEFT JOIN 
    special_event_categories AS spcat ON cat_group.id = spcat.group_id 
     AND cat_group.partner_id = spcat.partner_id; 

它將具有NULL值的組的記錄返回給我,這些值沒有任何類別。我需要使用子查詢嗎?

+3

將'LEFT JOIN'改爲'JOIN'? – piotrekkr

+2

是更改左連接加入或內連接(它們雖然是相同的) –

+0

@piotrekkr偉大的,幫助隊友感謝隊友!你們中的任何一個人都可以添加這個答案,以便我可以標記它? – Seeker

回答

2

你需要做的是改變LEFT JOINJOIN

SELECT 
    cat_group.subject as group_name , spcat . * 
FROM 
    special_event_groups AS cat_group 
JOIN 
    special_event_categories AS spcat ON cat_group.id = spcat.group_id 
    AND cat_group.partner_id = spcat.partner_id; 

如果參加條件沒有被滿足, LEFT JOIN顯示來自special_event_groups的行並在的選定列中附加NULL值。另一方面,當JOIN條件未被滿足時,從不返回行。您可以閱讀@MrMoose評論以獲取更多信息。

1

也可以使用OUTER LEFT JOINLEFT JOIN,JOIN,它取決於數據庫的版本。

試試這個:

SELECT 
    cat_group.subject as group_name , spcat . * 
FROM 
    special_event_groups AS cat_group 
     // LEFT JOIN, OUTER LEFT JOIN, JOIN 
    special_event_categories AS spcat ON cat_group.id = spcat.group_id 
WHERE cat_group.partner_id IS NULL; 

讓我知道它的工作