Самый мощный способ выбрать данные MySql, если результат равен нулю

Я хотел бы спросить, что является лучшим и наиболее эффективным способом извлечения данных из двух таблиц MySQL на основе определенных фильтров и, если результат нулевой, извлекать данные без условий?

table user

ID      NAME        SURNAME

1       nick        smith
2       john        davis
3       mattew      miller
4       roger       wilson
5       karl        taylor
6       july        moore
7       michael     white
8       genny       lopez


table access

ID      IDUSER      LASTACCESS

1       1           2015-05-27 08:10:15
2       5           2015-05-27 08:25:23
3       4           2015-05-27 09:15:24
4       7           2015-05-27 09:28:24
5       7           2015-05-27 23:02:05
6       1           2015-05-28 01:10:55
7       2           2015-05-28 02:11:20
8       3           2015-05-28 04:15:49

предполагая, что сейчас 10:00 утра дня 28.05.2015, я хотел бы извлечь доступы, произошедшие между сейчас и три часа назад, и если результат равен нулю (и он есть), я хотел бы, чтобы запрос возвращал последний несколько 3 доступа в порядке убывания даты. Спасибо

============================= ОБНОВЛЕНИЕ ==================== ============

Я пытаюсь это:

SELECT * FROM access
WHERE access.iduser = user.id
AND < DATE_SUB(NOW(), INTERVAL 3 HOUR)
OR user.id = ANY ( SELECT * FROM access ORDER BY lastaccess DESC )
GROUP BY user.id ORDER BY lastaccess DESC

Я бы получил результат непосредственно из MySQL без использования PHP

-2

Решение

$hours = 3;


$query = mysql_query("SELECT * FROM user, access
WHERE access.iduser = user.id
AND < DATE_SUB(NOW(), INTERVAL '$hours' HOUR) LIMIT 3");

если вы не получите результатов, увеличивайте $ часов на единицу каждый раз и повторяйте запрос, пока не получите результаты.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]