2010-06-16 60 views
1

这是我原来的查询:加入DATE_SUB查询到mysql中返回值的范围

$query = mysql_query("SELECT s.*, UNIX_TIMESTAMP(`date`) AS `date`, f.userid as favoritehash FROM songs s LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash' ORDER BY s.date DESC"); 

这将返回所有songs在我的数据库,然后从我的favorites表连接的数据,所以我可以显示至极项回访者已点击收藏或不收藏。访客被认为是一个独特的存储在饼干和favorites表中。

我需要改变这个查询,这样我才能得到最后几个月的歌曲。以下是我将DATE_SUB添加到我的查询中的尝试:

$query = mysql_query("SELECT s.*, UNIX_TIMESTAMP(`date`) AS `date`, f.userid as favoritehash FROM songs s WHERE `date` >= DATE_SUB(NOW() , INTERVAL 1 MONTH) LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash' ORDER BY s.date DESC"); 

建议?

回答

1

你只需要移动WHERE条款:

SELECT 
    s.*, 
    UNIX_TIMESTAMP(`date`) AS `date`, 
    f.userid as favoritehash 
FROM 
    songs s 
    LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash' 
WHERE `date` >= DATE_SUB(NOW() , INTERVAL 1 MONTH) 
ORDER BY s.date DESC 

LEFT JOIN是表中FROM列表中的一部分,你不能有where条件。

+0

完美..谢谢。 – ian 2010-06-16 07:10:16