2016-07-25 53 views
2

SQL Fiddle連接查詢的伯爵在MySQL聲明

我有三個數據庫表,我想選擇song_tag表,10個最常用的標籤,我可以用下面

SELECT `tag_id`, 
COUNT(`tag_id`) AS `value_occurrence` 
FROM `song_tag` 
GROUP BY `tag_id` 
ORDER BY `value_occurrence` DESC 
LIMIT 10; 
SQL查詢做

然後,我將如何從同一個查詢中的標籤表中獲取標籤名稱值?它甚至有可能嗎?我已經設置了一些虛擬數據和三個需要的表(鏈接在帖子的頂部)。

這將用於wordpress wpdb查詢。我不認爲有關配置設置,語言等的其他內容不會增加。

回答

1

您需要將標記表加入到結果中。所以像這樣:

SELECT s.tag_id, COUNT(s.tag_id) AS value_occurrence, t.name 
FROM song_tag s LEFT JOIN tags t 
    ON s.tag_id = t.id 
GROUP BY s.tag_id 
ORDER BY value_occurrence DESC 
LIMIT 10; 
+1

嗨布蘭登,那工作的一種享受謝謝你。必須等待接受答案,但會 –

+0

只是出於好奇@BrandonM我將如何去選擇一個基於id的歌曲,並抓住一個查詢與一首歌曲相關的所有標籤? –

+0

回答下面有格式。 – BrandonM

1

回答你的評論,讓我可以格式化。

我個人不知道如何在歌曲的單行中獲取所有標籤,但是,我們可以創建一個SELECT語句,將所有標籤與不同行中的歌曲相關聯。它看起來像

SELECT s.title, t.name 
FROM songs s LEFT JOIN song_tag st 
    ON s.id = st.song_id 
LEFT JOIN tags t 
    ON st.tag_id = t.id 
WHERE s.id = "123"; 
+0

是的,我不確定是否有可能獲得一行中的所有標籤。感謝您的幫助。 –

+0

我似乎記得它有可能嗎?只是不知道如何。 – BrandonM

+0

http://stackoverflow.com/questions/1067428/combine-multiple-child-rows-into-one-row-mysql 有一種僞辦法來做到這一點。雖然沒有創建多個列。 – BrandonM