2016-11-10 35 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