2010-06-16 59 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