|
|
|
| Здравствуйте, уважаемые форумчане. Прошу помочь правильно составить SQL-запрос.
У меня имеется следующая таблица:
CREATE TABLE IF NOT EXISTS `XeronKNBGames` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`date` datetime NOT NULL COMMENT 'Дата обновления',
`betAmount` decimal(11,2) NOT NULL COMMENT 'Сумма ставки',
`betCurrency` enum('USD','RUB') NOT NULL COMMENT 'Валюта ставки',
`serverID` int(11) NOT NULL COMMENT 'ID сервера',
`serverObject` enum('K','N','B') NOT NULL COMMENT 'Предмет сервера',
`opponentID` int(11) DEFAULT NULL COMMENT 'ID оппонента',
`clientID` int(11) DEFAULT NULL COMMENT 'ID клиента',
`clientObject` enum('K','N','B') DEFAULT NULL COMMENT 'Предмет клиента',
`winner` enum('SERVER','CLIENT','DRAW') DEFAULT NULL COMMENT 'Победитель',
`status` enum('NEW','PLAYED') NOT NULL DEFAULT 'NEW' COMMENT 'Статус',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Игры "Камень-Ножницы-Бумага"' AUTO_INCREMENT=5747 ;
|
Необходимо составить SQL запрос, который посчитает в данной таблице количество активных дней (по поле date), в которых есть хотя бы одна запись с serverID = НОМЕР или clientID = НОМЕР.
Поставим вопрос по другому, можно было бы это сделать просто выбкой строк у которых serverID или clientID равны НОМЕР, с указанием в конце GROUP By TO_DAYS(`date`), а далее посчитать количество возвращенных строк. Но мне нужно не подсчитывать его с PHP, а сразу такой запрос который вернёт количество дней в которых есть хоть одна игра.
Надеюсь задача понятна. Жду ответов. Заранее спасибо | |
|
|
|
|
|
|
|
для: pavluxa09
(15.05.2012 в 20:58)
| |
SELECT count( `co` ) AS `date_co`
FROM (
SELECT count( `ID` ) AS `co`
FROM `XeronKNBGames`
WHERE `serverID` = HOMEP OR `clientID` = НОМЕР
GROUP BY to_days( `charge_date` )
) `t`
|
| |
|
|
|
|
|
|
|
для: Sfinks
(15.05.2012 в 21:20)
| | Не подойдёт, при вложенном запросе не работает ((
Вот пример рабочего:
SELECT * FROM `XeronKNBGames` WHERE `serverID` = 21 OR `clientID` = 21 GROUP By TO_DAYS(`date`)
Но проблема в том что он возвращает строки, а мне нужно их количество. Что в нём нужно подправить? | |
|
|
|
|
|
|
|
для: pavluxa09
(16.05.2012 в 17:20)
| | Что значит "не работает"? Устал? Перегрелся? Обленился? В чем неработа заключается? У меня работает. | |
|
|
|
|
|
|
|
для: pavluxa09
(16.05.2012 в 17:20)
| | в строке "GROUP BY to_days( `charge_date` )" опечатался.
Вернее недоисправил свой столбец на
GROUP BY to_days( `date` ) | |
|
|
|
|
|
|
|
для: Sfinks
(16.05.2012 в 18:29)
| | Супер! Спасибо! | |
|
|
|