0
SQL 2と同じ結果をSQL 1と同じにしたいが、何らかの理由でSQLクエリはWHERE
に基づいて各日付の合計データ量をカウントするだけです。1つのSQLクエリと異なるデータを集計する
SQL 1(毎日のデータの適切な量を表示)
SELECT DATE(datetime_logged) AS date,
COUNT(data_status) AS status_a
FROM activity
WHERE id_user = '1'
AND DATE(datetime_logged) != CURDATE()
AND data_status = 'online'
GROUP BY DATE(datetime_logged)
ORDER BY DATE(datetime_logged) DESC
LIMIT 40
SQL 2(各日のデータの間違った量を表示)
SELECT DATE(datetime_logged) AS date,
(SELECT COUNT(data_status)
FROM activity
WHERE id_user = '1'
AND DATE(datetime_logged) != CURDATE()
AND data_status = 'online') AS status_a
FROM activity
GROUP BY DATE(datetime_logged)
ORDER BY DATE(datetime_logged) DESC
LIMIT 40
私はこれを実現するにはどうすればよい
テーブル
CREATE TABLE IF NOT EXISTS `activity` (
`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,
`data_game` text,
`datetime_logged` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `index_datelog` (`datetime_logged`)
)
?
あなたの解決策は、私が望んでいたとして働いていましたが、SQLクエリはウェブサイトを極端に**遅くする! 0-1.5秒から簡単に10秒以上。 – Erik
おそらく、日付フィールドのインデックスの問題です。私は残念なことにmySQLにあまり役に立たない。あなたの最初のクエリは、とにかく私の意見では良いアプローチでした!なぜそれを使用しないのですか? – JiggsJedi
私は 'AND DATE(a.datetime_logged)= DATE(sub.datetime_logged)'を追加して修正したので、私はその方法を使用しました。 – Erik