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
Форумы портала PHP.SU :: Версия для печати :: SELECT по двум таблицам, где значение поля максимальное
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » SELECT по двум таблицам, где значение поля максимальное

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

1. nfm2 - 15 Октября, 2016 - 16:06:28 - перейти к сообщению
Здравствуйте!

Подскажите пожалуйста какой наиболее правильный и быстрый способ выполнить такой запрос a-la:

SELECT ... FROM `troubletickets`, `messages` WHERE `troubletickets`.`status`='Open' AND
`messages`.`ticket_id` = `troubletickets`.`id` AND
MAX (`messages`.`date`) < '01-01-2016' ;

Цель/смысл запроса: выбери тикеты у которых открытый статус и не было сообщений за последнюю неделю/месяц.

Т.е. загвоздка с условием " AND MAX (`messages`.`date`) < '01-01-2016'". MAX() здесь явно не подходит. Как быть?

Спасибо!
2. Мелкий - 15 Октября, 2016 - 17:52:38 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM troubletickets WHERE STATUS='Open' AND NOT EXISTS (SELECT 1 FROM messages WHERE `messages`.`ticket_id` = `troubletickets`.`id` AND messages.date > now() - interval 1 week)

index troubletickets on status
index messages on ticket_id, date
3. nfm2 - 17 Октября, 2016 - 01:24:03 - перейти к сообщению
Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM troubletickets WHERE STATUS='Open' AND NOT EXISTS (SELECT 1 FROM messages WHERE `messages`.`ticket_id` = `troubletickets`.`id` AND messages.date > now() - interval 1 week)

index troubletickets on status
index messages on ticket_id, date


Огромное спасибо, "works like a charm"!
Отдельное - за "interval 1 week" - к своему стыду не знал о таком.

Я написал Вам в ЛС, посмотрите пожалуйста. Возможно Вас заинтересует моё предложение.

Еще раз - большое спасибо!

 

Powered by ExBB FM 1.0 RC1