2012-11-20 84 views
0

我使用LEFT JOIN來獲得排名前四的職位(排名在一張表中,發佈信息在另一張表中),以獲得排名前四的職位。我能夠獲得這些信息的方式只是按排名排序。不過,我希望排名前四的結果不按其排名(voting.vote)的順序出現,但按發佈日期(entries.id)排序。我不確定這樣做的最佳方式是什麼。下面是我的SQL語句,當前用於顯示時間範圍內排名前4的項目。使用PHP雙排序SQL結果

$result = mysql_query("SELECT entries.permalink, entries.title, voting.vote FROM entries LEFT JOIN voting ON voting.id = entries.id WHERE date>='$twoweeks' ORDER BY voting.vote DESC LIMIT 4");  

有沒有一種方法可以讓我得到了4行的結果,然後被由entries.id訂購或做我需要做的只是這個外部PHP中的數組和這樣的?

下面的編輯是信息從評論中拉出來的解決方案。

SELECT * 
FROM 
(
SELECT 
    entries.permalink, 
    entries.title, 
    voting.vote, 
    entries.id 
FROM entries 
LEFT JOIN voting ON voting.id = entries.id 
WHERE date>='$twoweeks' 
ORDER BY voting.vote DESC 
LIMIT 4 
) t 
ORDER BY id; 

回答

0

不過,我想我的前4結果不會出現在他們的 排名(voting.vote)的順序,但在其公佈日期 (entries.id)的順序。

試試這個:

SELECT * 
FROM 
(
    SELECT 
     entries.permalink, 
     entries.title, 
     voting.vote 
    FROM entries 
    LEFT JOIN voting ON voting.id = entries.id 
    WHERE date>='$twoweeks' 
    ORDER BY voting.vote DESC 
    LIMIT 4 
) t 
ORDER BY entries.id; 
-- Or ORDER BY entries.published date; 
+0

我試過了,仍然沒有得到來自查詢結果。任何其他想法?謝謝'mysql_query(「SELECT * FROM(SELECT entries.permalink,entries.title,voting.vote FROM entries LEFT JOIN voting on voting.id = entries.id WHERE entries.category LIKE'%For Sale%'AND date> =' $ twoweeks'ORDER BY voting.vote DESC LIMIT 4)t ORDER BY entries.id「);' – Joffroi

+0

我實際上發現可能是爲什麼一切都不起作用。我還需要在我的內部SELECT中查詢我的ID號以在外部ORDER BY中使用。基本上,我只需要在內部選擇中添加entries.id。 – Joffroi