0
我已經制作了一個已投入使用的投票腳本,但我想練習一些MySQL,嘗試通過SQL查詢對結果進行排序/篩選,而不是獲取整個表作爲一個數組並且使用循環進行處理。ORDER BY來自不同表的相同選項ID的行數
我遇到了一個根據投票次數排序投票選項的問題。我的數據庫有3個與此相關的腳本表:
vote_votes
- 其中包含了投票,每票一排鑄vote_options
- 其中包含的每一票vote_list
可能的選項 - 其中包含了與標題票的名單,類型等
我原來的劇本剛剛得到所有匹配使用
當前訪問的投票的ID選項SELECT * FROM vote_options WHERE vote_options.vid = $voteID
然後對與數組中vote_votes
內選項的唯一ID匹配的行進行計數,然後根據具有自定義排序功能的行數進行排序。
我想在一個查詢,我認爲這是可能的,我只是不知道如何。這是我目前的SELECT
聲明:
SELECT
options.optid as id,
options.value as value
FROM vote_options options
WHERE vid = {$vote['vid']};");
基本上,裏面vote_votes
,每個條目都有一個唯一的entryid
和optid
列,我想將它添加到查詢的方式,這些條目都算作WHERE vote_votes.optid = options.optid
(選項ID是唯一的,所以不需要查找投票ID)。
我當時希望這能行,但顯然是錯誤的。這是我放棄並在此問問題之前最接近的。
SELECT
options.optid as id,
options.value as value
FROM vote_options options
WHERE vid = {$vote['vid']}
ORDER BY (
SELECT COUNT(*)
FROM vote_votes
WHERE vote_votes.optid = options.optid
) DESC;
它'不清楚你想要什麼,但也許'ORDER BY CASE WHEN vote_options.field = somevalue AND vote_otions.someotherfiled = ithasthisoption THEN..' – Mihai 2014-08-30 00:04:13