我试图通过组合两个不同表中的信息来尝试为我的数据库构建查询:
第一个名为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中所有项目的不同item_ID
并且标记为00001和00002?是否只能使用一个查询表达式?
非常感谢!
奥里奥尔
答案 0 :(得分: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'
答案 1 :(得分:-1)
如果你想列出它们,请使用:
SELECT *
FROM item_distribution ID
LEFT JOIN item_tags IT ON ID.item_ID = IT.item_id;
这将返回两个连接在一起的表格。
您可以在联接后添加where子句以缩小结果范围(例如,每个文件夹或每个项目)。
WHERE ID.folder_ID = '00001';