Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите составить запрс

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alsio
Отправлено: 06 Января, 2014 - 16:15:10
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Введение.
При получении заказа на склад, звоним клиенту, сообщаем, мол поступил, забирайте.
Надо вывести данные, по каким из полученных заказов надо звонить.
Т.е. где еще вообще не звонили (дата звонка NULL) и где с момента последнего звонка прошло N времени, а клиента все не приходит.

Есть, соответственно, 2 связных таблицы: orders (заказы) с кучкой полей и orders_klcall (звонки) с полями id, parent_id, klcall_date, info. Связь по полям orders=parent_id

Есть запрос:
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query ("SELECT * FROM orders LEFT JOIN orders_klcall ON orders.orders_id=orders_klcall.parent_id WHERE orders.orders_status='Получено' AND orders.orders_price<>'' ORDER BY orders.orders_id DESC, orders_klcall.id DESC");
  2.  


По нему формируется таблица, типа:
-------------------------------- -------------
№ заказа | Статус | Дата звонка
-------------------------------- -------------
Заказ 1 | Получено | NULL
Заказ 2 | Получено | 06.01.14
Заказ 2 | Получено | 04.01.14
Заказ 3 | Получено | 06.01.14

Все хорошо, но "Заказ 2" выводится 2 раза, т.к. звонили 04 и 06 числа. Если в запросе добавить "GROUP BY orders_klcall.parent_id ORDER BY ... ", то "Заказ 2" остается с датой 04.01.14, т.к. там id меньше. А надо, чтобы было по последней дате (по бОльшему id).

Чего-то никак не пойму, как сделать, помогайте...
 
 Top
alsio
Отправлено: 07 Января, 2014 - 16:27:37
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Огорчение
 
 Top
alsio
Отправлено: 11 Мая, 2014 - 20:51:54
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Задача по-прежнему не решена! Прошу помощи!
 
 Top
Panoptik
Отправлено: 11 Мая, 2014 - 20:55:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ничего себе, вы за пол года не могли найти решение О_о

в вашем запросе не видно условия фильтрации звонков


-----
Just do it
 
 Top
alsio
Отправлено: 11 Мая, 2014 - 21:04:34
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Да, решение не нашел и стал решать другие задачи. Сейчас этот вопрос снова встал.

Должен показываться последний звонок (по дате или ид). Я написал, что не знаю, как сделать.
 
 Top
Panoptik
Отправлено: 11 Мая, 2014 - 21:09:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ну так вы предметно дайте информацию. структуру таблиц, и ожидаемый результат, а то кусок кода практически ни о чем не говорящий
(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM orders
  3. LEFT JOIN orders_klcall
  4.   ON orders.orders_id=orders_klcall.parent_id
  5. WHERE orders.orders_status='Получено'
  6.   AND orders.orders_price<>''
  7. GROUP BY orders.id
  8. HAVING MAX(orders_klcall.klcall_date) = orders_klcall.klcall_date
  9. ORDER BY orders.orders_id DESC, orders_klcall.id DESC


можно попробовать так или с вложенным запросом нужно думать


-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB