0

LEFT JOINを使用して、過去2週間に公開された上位4位の投稿を取得するために、上位の投稿(ランクは1つのテーブルにあり、投稿情報は別のテーブルにあります)を取得しています。この情報を取得する方法は、トップランクで並べ替えるだけでした。ただし、上位4つの結果をランキング(voting.vote)の順序ではなく、公開日(entries.id)の順序で表示したいと思います。これを行うための最良の方法が何であるかはわかりません。以下は、時間枠内で上位4つのランク付けされたアイテムを表示するために現在機能している私の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; 
4

1 に答える 1

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; 
于 2012-11-20T03:44:05.697 に答える