Сложный запрос в базу данных.... помогите разобрать.

computerworks

Новичок
Помогите одолеть сложный запрос.
Нужно найти разницу Prodano - Kol для каждой первой и последней записи каждого различного поля product (т.е. в указанных данных это будет 25, 35, 15, 10 - строки 1,5,6,9)
Как? Ниже приложен дамп БД.


База данных: `testing`
Структура таблицы `data`

CREATE TABLE IF NOT EXISTS `data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`snek` varchar(255) NOT NULL,
`prodano` int(11) NOT NULL,
`kode` int(11) NOT NULL,
`data` datetime NOT NULL,
`kol` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Дамп данных таблицы `data`
--

INSERT INTO `data` (`id`, `product`, `prodano`, `kode`, `data`, `kol`) VALUES
(1, 'Сникерс', 30, 1, '2013-04-25 19:51:14', 5),
(2, 'Сникерс', 30, 1, '2013-04-25 19:51:29', 6),
(3, 'Сникерс', 30, 1, '2013-04-25 19:51:29', 6),
(4, 'Сникерс', 30, 1, '2013-04-25 19:51:29', 6),
(5, 'Сникерс', 45, 1, '2013-04-25 19:51:29', 10),
(6, 'Марс', 45, 2, '2013-04-25 19:51:51', 30),
(7, 'Марс', 45, 2, '2013-04-25 19:51:51', 30),
(8, 'Марс', 45, 2, '2013-04-25 19:51:51', 30),
(9, 'Марс', 20, 2, '2013-04-25 19:52:23', 10);
 
Не знаешь, как сделать сложный SQL запрос, пиши простые РНР команды.

Откуда вообще взялась такая идея, что любую прикладную задачу можно решить одним "сложным" запросом? А если и можно, то зачем так ее решать?
 
Не знаешь, как сделать сложный SQL запрос, пиши простые РНР команды.

Откуда вообще взялась такая идея, что любую прикладную задачу можно решить одним "сложным" запросом? А если и можно, то зачем так ее решать?
т.е. вы не знаете можно ли это сделать и если да, то как?
 
Знаем, почему нет. Выьери минимальное и максимально значение id для группы товаров, и посчитай то, что тебе надо.
 
Код:
SELECT нужные поля  FROM data 
WHERE id IN (
    SELECT * FROM 
    ( 
      SELECT MIN(id) as id FROM data GROUP BY kode
    UNION
      SELECT MAX(id) as id FROM data GROUP BY kode
    ) subQuery 
    ORDER BY subQuery.id
)

Навскидку так
 
А как по минимальному и максимальному значению id в одном запросе найти то что надо?
 
Чутье мне подсказывает, совсем не по id ему надо выбирать.
 
Сверху