2011-11-05 44 views
0

我被困试图通过在两个不同的表中的信息相结合,建立我的数据库查询的信息结合起来:MySQL查询:试图两个表

第一个被称为item_distribution,有两列:一个对于folder_ID和另一个对于item_ID

而第二个被称为item_tags并且有两列:一个用于tag_ID,另一个用于item ID

让我们想象的情况:

在第一个表,我有以下信息(哪些项目是在文件夹中):

folder_ID  item_ID 
00001   00001 
00001   00002 
00001   00003 
00002   00004 
00001   00005 
00001   00006 

而在第二个表,以下行(哪些项目具有标签):

tag_ID   item_ID 
00001   00001 
00002   00001 
00003   00001 
00001   00002 
00003   00002 
00001   00003 
00002   00003 
00001   00004 
00001   00005 
00002   00005 

我怎么能得到所有这些都在文件夹00001,并有两个标签00001和项目的不同item_ID 00002?只有一个查询表达式可能吗?

非常感谢!

奥里奥尔

回答

1

我认为这将工作:

select distinct f.item_ID 
from folders f 
join tags t1 on f.itemID = t1.item_ID and t1.tag_ID = '00001' 
join tags t2 on f.itemID = t2.item_ID and t2.tag_ID = '00002' 
where f.folder_ID = '00001' 
+0

谢谢你的快速回答!它工作正常! – user597009

+1

@ user597009不客气。请考虑通过点击旁边的复选标记来接受(和/或向上投票)正确答案。你应该对你提出的所有问题都做到这一点,并得到正确答案。 – Fosco

-1

如果要列出所有使用此:

SELECT * 
FROM item_distribution ID 
LEFT JOIN item_tags IT ON ID.item_ID = IT.item_id; 

,将返回这两个表连接在一起。

您可以在连接后添加where子句以缩小结果(例如,每个文件夹或每个项目)。

WHERE ID.folder_ID = '00001'; 
+0

为什么这会被投票?! – SVBokenham