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回プレイした場合(例Battlefield 3の場合)、1回のゲームを返します。同じユーザーが別のゲームを37回プレイした場合、2回のゲームなどが返されます。
SUM(DISTINCT ...
はゲームIDで1を置き換えるだけなので、機能しません。
2行ではなく2行を表示するように行を合計するにはどうすればよいですか?
Oh my!あなたが正しい!このコードで時間が長すぎます:Pありがとうございました!できるだけ早くあなたの答えを受け入れます。 – Erik
うれしかった:) – Massanu