Показать сообщение отдельно

  #3  
Старый 18.04.2010, 21:04
drLex
Новичок
Регистрация: 18.03.2010
Сообщений: 6
Провел на форуме:
72428

Репутация: 0
По умолчанию

Цитата:
Сообщение от krypt3r  
Используйте подзапрос
Код:
AND `x`.`date` = (SELECT MAX(`x`.`date`) FROM `x`)...
Неа...
Там еще условие `x`.`id` = `y`.`id`
Т.е. результатов может быть несколько
А в подзапросе `x`.`date` = (SELECT MAX(`x`.`date`) FROM `x`)... Возможен только один единственный результат

Значит я не правильный пример показал

Попробую еще раз:
Код:
SELECT `y`.`id`  
FROM `x` , `y`   
WHERE MAX(`x`.`date`) < UNIX_TIMESTAMP()   
AND `x`.`id` = `y`.`id`
Может так будет понятно?

...
Или так?
Код:
SELECT `y`.`id`, `x`.`date`  
FROM `x` , `y`     
WHERE `x`.`id` = `y`.`id`
Этот запрос возвращает несколько результатов с несколькими значениями `x`.`date` для каждого `y`.`id`

`y`.`id` | `x`.`date`
1 | 1271606772
1 | 1271606723
1 | 1271606847 - максимальное значение `x`.`date` для `y`.`id` = 1
4 | 1271606455
4 | 1271606754 - максимальное значение `x`.`date` для `y`.`id` = 4

Из этих результатов нужно выбрать `x`.`date` который максимальный для этого `y`.`id` и удовлетворяет условию `x`.`date` < UNIX_TIMESTAMP()

если 1271606847 < UNIX_TIMESTAMP() то оно пойдет в результат
если 1271606754 < UNIX_TIMESTAMP() то оно пойдет в результат

Вот такое вот надо както в одном запросе сделать...
 
Ответить с цитированием