2011-07-01 82 views
0

我正在研究視頻標籤系統。由於我必須運行先前的查詢,因此我知道搜索結果中每個視頻的唯一ID,但我想要做的是在列表中的搜索結果中顯示每個視頻的所有標籤,因此它有多個類別並顯示貢獻者而無需點擊進入主頁面。檢索MYSQL查詢中所有結果的所有標籤

以下代碼爲搜索結果中的2個視頻返回5行。我總是可以循環使用這個結果,但那意味着我不能使用限制函數,而且我將不得不構建一些PHP來爲我做這些。

SELECT * FROM tags 
JOIN siteupdates ON tags.item_id = siteupdates.clip_id 
JOIN updatetype ON siteupdates.updatetype = updatetype.id_type 
JOIN tagnames ON tags.tag = tagnames.tagid 
WHERE tags.item_id IN (248,257) 
ORDER BY siteupdates.clip_date DESC 

結果(這是第5個結果的一個例子,我也切出最不相關的列)

 
uid/item_id/tag/updatetype/tagname/tagtype 
1560/248/14/1/tag 14/Category 
1561/248/3/1/tag 3/Contributor 
1562/248/7/1/tag 7/Category 
543/257/43/1/tag 43/Category 
544/257/3/1/tag 3/Contributor 

理想情況下我需要的是一個2行的結果,但包含所有的標籤數據。

或者,我只是要求一些不可能的東西,只是MYSQL和我的原始計劃在PHP中循環是唯一的選擇?爲每個結果獲取標籤信息的新查詢對我來說聽起來不是一個好主意,因爲每頁最多可以有50個結果,因此共有52個查詢(包括腳本中的前一個)!

任何幫助,非常感謝。

回答

0

所以,如果我找到你的權利,你想要所有的標籤,但每個結果記錄不是一個標籤,但所有的標籤?在這種情況下,GROUP_CONCAT()可能會有所幫助。

+0

剛剛和這個一起玩,工作出色!一旦你告訴我這個功能,我會在幾秒鐘內在Google上找到一個很好的例子。你已經救了我幾個小時!最後的SQL(ISH)是 - SELECT *,GROUP_CONCAT(tagnames.tagname)AS標籤 FROM JOIN siteupdates ON tags.item_id = siteupdates.clip_id JOIN UPDATETYPE ON siteupdates.updatetype = updatetype.id_type JOIN標記名ON tags.tag標籤= tagnames.tagid WHERE tags.item_id IN(2,3,4,5) GROUPBY tags.item_id ORDERBY siteupdates.clip_date DESC LIMIT 0,30 – user825494