DeadMorozBLR
Новичок
Помогите пжт с запросом
Есть две таблицы, связанные 1:N, в таблице 'ordered_item' неск-ко записей соответствуют
одной записи в таблице 'order' (ordered_item.order = order.id).
Необходимо выбрать записи из таблицы 'order', сгруппировав их по определенному правилу (например,
по дням) и получить количество записей в этой таблице для каждой из групп (поле count результата)
и сумму записей в поле 'quantity' в таблице 'ordered_item', соответствующим записям этой группы.
Я пока сделал это так:
[SQL]
DROP TABLE IF EXISTS `tmp`;
CREATE TEMPORARY TABLE `tmp`
SELECT `order`,
SUM(`quantity`) AS `quantity`
FROM `ordered_item`
GROUP BY `order`;
SELECT DATE_FORMAT(`time`, '%d.%m.%Y') AS `date`,
COUNT(`id`) AS `count`,
SUM(`quantity`) AS `quantity`
FROM `order`
INNER JOIN `tmp`
ON `tmp`.`order` = `order`.`id`
GROUP BY `date`;
[/SQL]
Можно ли (и как) получить аналогичный результат, но без использования временной таблицы? И вообще, можно ли выполнить последовательно несколько запросов без использования временной таблицы?
Есть две таблицы, связанные 1:N, в таблице 'ordered_item' неск-ко записей соответствуют
одной записи в таблице 'order' (ordered_item.order = order.id).
Код:
Таблица 'order':
+----+---------------------+
| id | time |
+----+---------------------+
| 1 | 2004-06-14 13:20:17 |
| 2 | 2004-06-14 21:30:03 |
| 3 | 2004-06-15 13:20:17 |
| 4 | 2004-06-15 18:55:10 |
| 5 | 2004-06-15 23:01:00 |
+----+---------------------+
Код:
Таблица 'ordered_item':
+-------+----------+
| order | quantity |
+-------+----------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
| 4 | 1 |
| 5 | 2 |
+-------+----------+
по дням) и получить количество записей в этой таблице для каждой из групп (поле count результата)
и сумму записей в поле 'quantity' в таблице 'ordered_item', соответствующим записям этой группы.
Код:
Результат:
+------------+-------+----------+
| date | count | quantity |
+------------+-------+----------+
| 14.06.2004 | 2 | 7 |
| 15.06.2004 | 3 | 5 |
+------------+-------+----------+
[SQL]
DROP TABLE IF EXISTS `tmp`;
CREATE TEMPORARY TABLE `tmp`
SELECT `order`,
SUM(`quantity`) AS `quantity`
FROM `ordered_item`
GROUP BY `order`;
SELECT DATE_FORMAT(`time`, '%d.%m.%Y') AS `date`,
COUNT(`id`) AS `count`,
SUM(`quantity`) AS `quantity`
FROM `order`
INNER JOIN `tmp`
ON `tmp`.`order` = `order`.`id`
GROUP BY `date`;
[/SQL]
Можно ли (и как) получить аналогичный результат, но без использования временной таблицы? И вообще, можно ли выполнить последовательно несколько запросов без использования временной таблицы?