我有三個與此問題相關的表 - 排名集,項目和投票。 Rankset實質上是該項目所在的類別,例如「最喜歡的運動」。項目是實際投票的內容,例如「棒球」。投票是投票本身的日誌。我想要做的是在頁面上顯示25個最活躍的排名集。下面是表本身的樣子:檢索對象中組合投票數最高的集
CREATE TABLE IF NOT EXISTS `rankset` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `item` (
`id` BIGINT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(128) NOT NULL ,
`rankset` BIGINT NOT NULL ,
`image` VARCHAR(45) NULL ,
`description` VARCHAR(140) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `mydb`.`vote` (
`id` BIGINT NOT NULL AUTO_INCREMENT ,
`value` TINYINT NOT NULL ,
`item` BIGINT NOT NULL ,
`user` BIGINT NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
這是我到目前爲止已經試過:
SELECT rankset.*, COALESCE(COUNT(vote.id), 0) AS votes
FROM rankset, item, vote
WHERE rankset.id = item.rankset
AND vote.item = item.id ORDER BY votes DESC LIMIT 25
無論出於何種原因,我似乎只能夠得到的最流行的rankset與那。我也試過這個:
SELECT rankset.*, COALESCE(COUNT(vote.id), 0) AS votes
FROM rankset, vote, item
WHERE item.rankset = rankset.id
GROUP BY rankset ORDER BY votes DESC LIMIT 25
但是,這似乎完全忽略了「ORDER BY」部分。什麼是正確的方式去做這件事?
編輯:這裏的小提琴:http://sqlfiddle.com/#!2/b57ac
可以提供sqlfiddle? –
我的不好,它現在在那裏。 – Fibericon
我正在尋找一些數據表 –