2013-12-22 53 views
0

假設我的數據庫選擇的文件有3個表:未標記

Documents 
Tags 
Documents_Tags (the join table) 

我知道如何找到使用LEFT賦予文檔標籤JOIN,但我無法找到屬於標籤未分配。

SELECT * FROM `documents_tags` 
    LEFT JOIN `tags` ON `tags`.`id` = `documents_tags`.`tag_id` 
    WHERE `document_id` = 111; 

我已經嘗試了不同的連接,但我一直只得到一條記錄。我認爲有一種方法可以加入所有標籤,然後將結果限制在文檔爲空的位置?

編輯:在上面的例子中,我需要找到所有未分配給文檔111的標籤。

+0

但在上面的查詢中,您試圖找到所有標籤**實際分配給** 111 –

回答

2
SELECT Tags.name -- or whatever it is 
FROM 
    tags 
    LEFT JOIN documents_tags dt ON (tags.id = dt.tag_id AND dt.document_id = 111) 
WHERE dt.id IS NULL