|
|
|
| Имеется таблица:
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)
| | Вы так хорошо объясняете. Приятно читать! | |
|
|
|
|
|
|
|
для: 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
Вопрос: почему запрос не работает ? | |
|
|
|
|
|
|
|
для: Cyrax
(15.06.2009 в 19:26)
| | потому что синтаксическая ошибка.
А какой ответ Вы ждете?
(особенно после Вашего экзерсиса в id_theme=64913) | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2009 в 19:55)
| | >потому что синтаксическая ошибка.
2 синтаксические и 2 семантические
Позже напишу корректный запрос, чтобы ветка обладала свойством "завершённости"
>А какой ответ Вы ждете?
>(особенно после Вашего экзерсиса в id_theme=64913)
"2 синтаксические и 2 семантические ошибки"
А вы ещё не решили ту задачу одним запросом ??? | |
|
|
|
|
|
|
|
для: Cyrax
(15.06.2009 в 23:39)
| | Значит не показалось.
Я все Ваши "задачи" буду решать одним способом. | |
|
|
|
|