|
|
|
| Имеется таблица продаж (sales) и таблица пунктов продажи (points).
В таблице sales - id_point (ид пункта) и date - дата продажи.
В общем мне нужно таблице вывести отчет о количестве продаж за указанный период с группировкой по дням за каждый пункт продажи.
Как вариант я предусмотрел в цикле вывести все пункты продажи и в этом же цикле формировать запрос для подсчета кол-во продаж каждого пункта с группировкой по дням.
Все бы неплохо, но как говорят пускать запрос в цикле это ни есть правило хорошего тона.
Какие есть еще идеи поступить другим образом? | |
|
|
|
|
|
|
|
для: garold
(21.04.2010 в 12:29)
| | Поле date в каком формате? | |
|
|
|
|
|
|
|
для: cheops
(21.04.2010 в 12:32)
| | date | |
|
|
|
|
|
|
|
для: garold
(21.04.2010 в 12:29)
| | Пункты продажи (points) как связаны с таблицей продаж? И что хранится в пунктах продаж(points)? | |
|
|
|
|
|
|
|
для: cheops
(21.04.2010 в 12:43)
| | в пункте продажи id_point - первичный ключ, name - название пункта. В таблице sales связь с пунктами идет через ключ id_point. | |
|
|
|
|
|
|
|
для: garold
(21.04.2010 в 12:29)
| | Вообще-то стоит привести хотя бы дамп структуры (SHOW CREATE TABLE sales)
Ориентироваться имеет смысл на группирующий запрос (если нужны подитоги , то в варианте WITH ROLLUP) с сортировкой по указанным полям.
Поспособствует также составной индекс на полях id_point и date_time.
SELECT id_point, DATE(date_time) AS dt, COUNT(*)
FROM sales
GROUP BY id_point, dt WITH ROLLUP
ORDER BY id_point, dt
|
Запрос можно включить таблицей как часть объемлющего JOIN с намерением выцепить из другой таблицы характеристики пунктов продажи. | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2010 в 12:47)
| | >Запрос можно включить таблицей как часть объемлющего JOIN с намерением выцепить из другой таблицы характеристики пунктов продажи.
О это то что нада, так как мне нужно еще выцепить и тех, которых нет в таблице продаж, тоесть в указанный период могут и не все пункты совершать продажи, и мне трубуется все сравно выводить там 0. | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2010 в 12:47)
| | разве WITH ROLLUP будет работать при использовании ORDER BY?у меня ругается.
upd.
Теперь назревает вопрос, собсвенно, касающегося php.
В общем сама html-таблица у меня такова:
В первом столбце (начиная со второй строки, так как в первой строке указаывается - Пункт/Дата) выводятся построчно все пункты продаж. А уже в остальных столбцах (опять же начиная со второй строки), соответсвенно, каждому пункту выводятся кол-во продаж.
Тоесть как бы мне грамотно определить что в цикле закончился вывод кол-во продаж текущего пункта, и начался такой вывод по следущему пункту итд. | |
|
|
|
|
|
|
|
для: garold
(21.04.2010 в 15:29)
| | Верно, ORDER BY при этом лишний.
>как бы мне грамотно определить что в цикле закончился вывод кол-во продаж текущего пункта, и начался такой вывод по следущему пункту итд.
По смене значения id_point в потоке набора строк результата запроса. | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2010 в 17:28)
| | Да, но как это бы в цикле узнать что текущий id_point отличается от предыдущего? | |
|
|
|