我想问一下,基于某些过滤器从两个mysql表中提取数据的最佳和最强大的方法是什么,如果结果为null,则无条件地提取数据?
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
假设现在是2015年05月28日当天上午10点,我想提取从现在到3小时前发生的访问,如果结果是零(并且是),我想查询以降序日期顺序返回最后几次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
答案 0 :(得分:-1)
$hours = 3;
$query = mysql_query("SELECT * FROM user, access
WHERE access.iduser = user.id
AND < DATE_SUB(NOW(), INTERVAL '$hours' HOUR) LIMIT 3");
如果没有结果,请每次将$ hours增加1并重新运行查询,直到获得结果。