2016-11-10 36 views
-1

我有3個表: 一個叫「文檔」 一個被稱爲「標籤」 和一個被稱爲「documents_tags」內加入子查詢作爲單獨的列

在表中「document_tags」我有3列: ID,document_id,tag_id 這意味着通過此表可以將多個標籤鏈接到多個文檔。

現在我想放出表「標籤」的所有數據集,並在每個結果行中,如果標籤與ID爲「3」的文檔(在document_tags表中)鏈接,並且我希望有一個「1」和如果不是,則爲「0」。

這是可能在一個單一的查詢?

+1

是的,你可以用'LEFT OUTER JOIN'做到這一點。如果沒有找到匹配的行,那麼'document'表中的列就是'NULL'。你可以使用IF(document.id IS NULL,「0」,「1」)作爲你想要的列。 – Barmar

+0

對不起,我是初學者,無法找到解決方案;-( –

+0

可以給我一個提示,因爲我想要生成以下查詢:SELECT ID,title,(Select * from documents_tags WHERE document_id = 3和tag_id = [相應結果行的標記]作爲鏈接的FROM標記...在哪裏放置左外部連接,以及如何引用我寫爲「[相應結果行的標記]」?對不起,我的英文不是那麼好... –

回答

0

使用LEFT JOIN

SELECT t.id, t.title, IF(dt.document_id, 0, 1) as linked 
FROM tags AS t 
LEFT JOIN documents_tags AS dt ON dt.tag_id = t.id AND dt.document_id = $doc_id