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

Форум MySQL

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

 

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

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

тема: Хитрый запрос...
 
 автор: Cyrax   (15.06.2009 в 16:55)   письмо автору
 
 

Имеется таблица:

CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`Date` int(11) default NULL,
`Count` int(11) default NULL,
`Remainder` int(11) default NULL,
`Article` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1250 AUTO_INCREMENT=11 ;

INSERT INTO `test` (`id`, `Date`, `Count`, `Remainder`, `Article`) VALUES
(1, 10111, 1, 0, 1),
(2, 10111, 2, 1, 1),
(3, 40444, 2, 2, 1),
(4, 10116, 2, 0, 2),
(5, 10116, 3, 2, 2),
(6, 40449, 3, 3, 2),
(7, 30333, -1, 3, 1),
(8, 50555, -1, 4, 1),
(9, 30338, -2, 5, 2),
(10, 50559, -2, 6, 2);

Не обращая внимания на логику структуры, выполняем запрос:
select Article, sum(select `Count` where `Date` = Dates.startDate)
from test, (select MIN(InTest.`date`) AS startDate FROM test InTest WHERE InTest.`article` = `article`) Dates
group by Article

Как корректно построить этот запрос ? Не обращаем внимание на тип даты (для удобства сделал число).
Необходимо вывести список Articles'ов и для каждого из них вывести сумму полей "Count" с минимальной датой:
1 3
2 5

При этом в запросе таблица Dates должна находиться именно в разделе from основного запроса + использование группировки.
При таких требованиях запрос реализуем ?

  Ответить  
 
 автор: 23423   (15.06.2009 в 18:15)
 
   для: Cyrax   (15.06.2009 в 16:55)
 

Вы так хорошо объясняете. Приятно читать!

  Ответить  
 
 автор: Cyrax   (15.06.2009 в 19:26)   письмо автору
 
   для: 23423   (15.06.2009 в 18:15)
 

Выполните запрос:

CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`Date` int(11) default NULL,
`Count` int(11) default NULL,
`Remainder` int(11) default NULL,
`Article` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1250 AUTO_INCREMENT=11 ;

INSERT INTO `test` (`id`, `Date`, `Count`, `Remainder`, `Article`) VALUES
(1, 10111, 1, 0, 1),
(2, 10111, 2, 1, 1),
(3, 40444, 2, 2, 1),
(4, 10116, 2, 0, 2),
(5, 10116, 3, 2, 2),
(6, 40449, 3, 3, 2),
(7, 30333, -1, 3, 1),
(8, 50555, -1, 4, 1),
(9, 30338, -2, 5, 2),
(10, 50559, -2, 6, 2);

Далее выполните запрос:
select Article, sum(select `Count` where `Date` = Dates.startDate)
from test, (select MIN(InTest.`date`) AS startDate FROM test InTest WHERE InTest.`article` = `article`) Dates
group by Article

Вопрос: почему запрос не работает ?

  Ответить  
 
 автор: Trianon   (15.06.2009 в 19:55)   письмо автору
 
   для: Cyrax   (15.06.2009 в 19:26)
 

потому что синтаксическая ошибка.
А какой ответ Вы ждете?
(особенно после Вашего экзерсиса в id_theme=64913)

  Ответить  
 
 автор: Cyrax   (15.06.2009 в 23:39)   письмо автору
 
   для: Trianon   (15.06.2009 в 19:55)
 

>потому что синтаксическая ошибка.
2 синтаксические и 2 семантические
Позже напишу корректный запрос, чтобы ветка обладала свойством "завершённости"

>А какой ответ Вы ждете?
>(особенно после Вашего экзерсиса в id_theme=64913)
"2 синтаксические и 2 семантические ошибки"
А вы ещё не решили ту задачу одним запросом ???

  Ответить  
 
 автор: Trianon   (16.06.2009 в 01:01)   письмо автору
 
   для: Cyrax   (15.06.2009 в 23:39)
 

Значит не показалось.
Я все Ваши "задачи" буду решать одним способом.

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

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