2013-10-02 45 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的所有標籤?如果是這樣,那麼假設數據是一致的,我不明白爲什麼這不起作用。 –