2015-05-29 51 views
-2

我在mysql中3相關的表,這樣的事情:如何打印所有項目與X標籤

Table: Items 
Columns: ID, Item_ID, Item_Title, Content 

Table: Tags 
Columns: Tag_ID, Tag_Title 

Table: Items_Tags 
Columns: Item_ID, Tag_ID 
  • 的Item_ID項目表的外鍵。

  • Items_Tags是一個相關表。

現在我想打印的所有項目與X標籤。

例如:

// Items 
+-----+-----+---------+-----------------+ 
| 1 | 123 | tile1 | content1  | 
----------------------------------------- 
| 2 | 123 | tile2 | content2  | 
----------------------------------------- 
| 3 | 444 | tile3 | content3  | 
----------------------------------------- 
| 4 | 333 | tile4 | content4  | 
----------------------------------------- 

// Tags 
+------+-----+ 
| 22 | php | 
-------------- 
| 23 | js | 
-------------- 
| 11 | sql | 
-------------- 

// Item_Tags 
+-------+-----+ 
| 123 | 22 | 
--------------- 
| 444 | 23 | 
--------------- 
| 333 | 11 | 
--------------- 

我不知道爲什麼我很困惑,只是我知道我應該使用join,但是怎麼樣?! 我如何使用php標籤打印所有項目?

+0

這個問題有點短暫的信息。你可以分享你的嘗試,以及你遇到了什麼問題? –

+0

@JayBlanchard我想打印所有具有相同標籤的項目!我應該怎麼做?上面的例子是 – Shafizadeh

+0

是樣本數據嗎?用更少的數據擴展示例。每個表格中的單行不起作用 – Makesh

回答

2

您只需將您的表連接在一起,然後根據需要搜索標籤標題。

SELECT * FROM items i 
LEFT JOIN item_tags it ON i.item_id = it.item_id 
LEFT JOIN tags t ON t.tag_id = it.tag_id 
WHERE tag_title = 'x' 
+0

打我:D – marijnz0r

+0

然後結果將是Items表中的前兩行? – Shafizadeh

+0

而不是問,試試吧。但是,會的。 – Styphon

0

這對你有用;

SELECT * FROM Items AS I,Tags AS T, Items_Tags AS IT 
WHERE I.ID = IT.Item_ID 
AND T.ID = IT.Tag_ID 
AND WHERE T.Tag_Title = 'x' 
+0

這個算法是最優的?爲什麼不使用'join'? – Shafizadeh

+0

是的,它喜歡加入。簡單的方法:D – hurricane