Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Пожалуйста, помогите составить правильный SQL запрос
 
 автор: pavluxa09   (15.05.2012 в 20:58)   письмо автору
 
 

Здравствуйте, уважаемые форумчане. Прошу помочь правильно составить 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, а сразу такой запрос который вернёт количество дней в которых есть хоть одна игра.

Надеюсь задача понятна. Жду ответов. Заранее спасибо

  Ответить  
 
 автор: Sfinks   (15.05.2012 в 21:20)   письмо автору
 
   для: 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`

  Ответить  
 
 автор: pavluxa09   (16.05.2012 в 17:20)   письмо автору
 
   для: Sfinks   (15.05.2012 в 21:20)
 

Не подойдёт, при вложенном запросе не работает ((
Вот пример рабочего:
SELECT * FROM `XeronKNBGames` WHERE `serverID` = 21 OR `clientID` = 21 GROUP By TO_DAYS(`date`)

Но проблема в том что он возвращает строки, а мне нужно их количество. Что в нём нужно подправить?

  Ответить  
 
 автор: Sfinks   (16.05.2012 в 18:26)   письмо автору
 
   для: pavluxa09   (16.05.2012 в 17:20)
 

Что значит "не работает"? Устал? Перегрелся? Обленился? В чем неработа заключается? У меня работает.

  Ответить  
 
 автор: Sfinks   (16.05.2012 в 18:29)   письмо автору
 
   для: pavluxa09   (16.05.2012 в 17:20)
 

в строке "GROUP BY to_days( `charge_date` )" опечатался.

Вернее недоисправил свой столбец на

GROUP BY to_days( `date` )

  Ответить  
 
 автор: pavluxa09   (19.05.2012 в 15:02)   письмо автору
 
   для: Sfinks   (16.05.2012 в 18:29)
 

Супер! Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования