1
我想統計用戶已玩過多少個獨特遊戲。下面是當前的SQL查詢的樣子:合併行並給我總計數
SELECT COUNT(DISTINCT d.id_game) AS c
FROM discord AS d
JOIN discord_games AS dg
ON d.id_game = dg.id
WHERE d.id_user = '1'
AND d.id_game != '0'
GROUP BY d.id_game
ORDER BY dg.data_name ASC
,這裏是現在數據庫的樣子:
CREATE TABLE IF NOT EXISTS `discord` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(11) NOT NULL,
`id_channel` varchar(50) NOT NULL,
`id_game` int(11) NOT NULL,
`data_muted_server` tinyint(4) NOT NULL,
`data_muted_self` tinyint(4) NOT NULL,
`data_deafen_server` tinyint(4) NOT NULL,
`data_deafen_self` tinyint(4) NOT NULL,
`data_suppressed` tinyint(4) NOT NULL,
`data_status` varchar(10) NOT NULL,
`datetime_logged` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
CREATE TABLE IF NOT EXISTS `discord_games` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
CREATE TABLE IF NOT EXISTS `discord_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_id` text NOT NULL,
`data_name` varchar(50) NOT NULL,
`data_avatar` text,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
SQL查詢正確計算,但它只能算作1每行。
我在想什麼的例子。如果ID爲1的用戶玩過24次相同的遊戲(例如「戰地3」),它將返回1次玩過的遊戲。如果同一用戶再玩37次遊戲,則會返回2次玩過的遊戲等等。
SUM(DISTINCT ...
不起作用,因爲它只用遊戲ID替換1。
我怎樣才能總結行,所以它顯示數字2而不是2行?
哦,我的!你是對的!這段代碼太多時間了:P非常感謝!我會盡快接受你的回答。 – Erik
很高興幫助:) – Massanu