Сообщение от
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() то оно пойдет в результат
Вот такое вот надо както в одном запросе сделать...