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

Форум MySQL

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

 

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

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

тема: Отчет о количестве продаж за указанный период с группировкой по дням за каждый пункт продажи
 
 автор: garold   (21.04.2010 в 12:29)   письмо автору
 
 

Имеется таблица продаж (sales) и таблица пунктов продажи (points).
В таблице sales - id_point (ид пункта) и date - дата продажи.
В общем мне нужно таблице вывести отчет о количестве продаж за указанный период с группировкой по дням за каждый пункт продажи.

Как вариант я предусмотрел в цикле вывести все пункты продажи и в этом же цикле формировать запрос для подсчета кол-во продаж каждого пункта с группировкой по дням.
Все бы неплохо, но как говорят пускать запрос в цикле это ни есть правило хорошего тона.

Какие есть еще идеи поступить другим образом?

  Ответить  
 
 автор: cheops   (21.04.2010 в 12:32)   письмо автору
 
   для: garold   (21.04.2010 в 12:29)
 

Поле date в каком формате?

  Ответить  
 
 автор: garold   (21.04.2010 в 12:40)   письмо автору
 
   для: cheops   (21.04.2010 в 12:32)
 

date

  Ответить  
 
 автор: cheops   (21.04.2010 в 12:43)   письмо автору
 
   для: garold   (21.04.2010 в 12:29)
 

Пункты продажи (points) как связаны с таблицей продаж? И что хранится в пунктах продаж(points)?

  Ответить  
 
 автор: garold   (21.04.2010 в 13:00)   письмо автору
 
   для: cheops   (21.04.2010 в 12:43)
 

в пункте продажи id_point - первичный ключ, name - название пункта. В таблице sales связь с пунктами идет через ключ id_point.

  Ответить  
 
 автор: Trianon   (21.04.2010 в 12:47)   письмо автору
 
   для: 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 с намерением выцепить из другой таблицы характеристики пунктов продажи.

  Ответить  
 
 автор: garold   (21.04.2010 в 13:25)   письмо автору
 
   для: Trianon   (21.04.2010 в 12:47)
 

>Запрос можно включить таблицей как часть объемлющего JOIN с намерением выцепить из другой таблицы характеристики пунктов продажи.

О это то что нада, так как мне нужно еще выцепить и тех, которых нет в таблице продаж, тоесть в указанный период могут и не все пункты совершать продажи, и мне трубуется все сравно выводить там 0.

  Ответить  
 
 автор: garold   (21.04.2010 в 15:29)   письмо автору
 
   для: Trianon   (21.04.2010 в 12:47)
 

разве WITH ROLLUP будет работать при использовании ORDER BY?у меня ругается.

upd.
Теперь назревает вопрос, собсвенно, касающегося php.
В общем сама html-таблица у меня такова:
В первом столбце (начиная со второй строки, так как в первой строке указаывается - Пункт/Дата) выводятся построчно все пункты продаж. А уже в остальных столбцах (опять же начиная со второй строки), соответсвенно, каждому пункту выводятся кол-во продаж.
Тоесть как бы мне грамотно определить что в цикле закончился вывод кол-во продаж текущего пункта, и начался такой вывод по следущему пункту итд.

  Ответить  
 
 автор: Trianon   (21.04.2010 в 17:28)   письмо автору
 
   для: garold   (21.04.2010 в 15:29)
 

Верно, ORDER BY при этом лишний.

>как бы мне грамотно определить что в цикле закончился вывод кол-во продаж текущего пункта, и начался такой вывод по следущему пункту итд.

По смене значения id_point в потоке набора строк результата запроса.

  Ответить  
 
 автор: garold   (21.04.2010 в 17:39)   письмо автору
 
   для: Trianon   (21.04.2010 в 17:28)
 

Да, но как это бы в цикле узнать что текущий id_point отличается от предыдущего?

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

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