2013-10-02 46 views
0

我有以下的表..获取的项目在不同的表

items

ID | Title |  Desc 
67 | Title_1 | Description_1 
68 | Title_2 | Description_2 

tag

ID | Name 
5 | tag_1 
7 | tag_2 
22 | tag_3 
23 | tag_4 

tag_ref

ID | tagID | itemID 
1 | 5  | 68 
2 | 7  | 67 
3 | 5  | 67 
4 | 23  | 68 
5 | 22  | 68 

现在,我要选择与当前产品项目ID = 67

因为我想获得通过标签的相关项目相同标签识别的所有项目。

+3

你甚至试图解决在自己的这个问题呢? – Matten

回答

0
SELECT * FROM items JOIN item tag_ref on tag_ref.itemID = items.ID JOIN tag 
on tag.ID = tag_ref.tagID where item.ID = 67 
0

加入itemstag_ref,仅返回项目,其中一个标签识别在返回所有tagIDs的项目67子查询存在:

SELECT items.* 
FROM items 
JOIN tag_ref as t on t.itemID = items.ID 
WHERE t.tagID in (SELECT t2.tagID 
        FROM tag_ref as t2 
        JOIN items as i2 on i2.ID = t2.itemID 
        WHERE i2.ID = 67) 
+0

嗨,我有以下。但它不工作。选择项。* FROM #__ k2_items作为 JOIN #__ k2_tags_xref作为项目T ON t.itemID = items.ID WHERE t.tagID中(选择t2.tagID FROM #__ k2_tags_xref为t2 JOIN项目as i2.ID = t2.itemID WHERE i2.ID = 67) – user2767055

+0

尝试先运行子查询。是否正确返回项目67的所有标签?如果是这样,那么假设数据是一致的,我不明白为什么这不起作用。 –