2011-12-16 9 views
0

以下のクエリを5つの結果に制限したいと思います。しかし、5つの結果だけではありません。 pointsの5つの最小値。これどうやってするの?クエリの5つの最も低い値へのクエリの制限を最小値の5つに制限する

$side = "SELECT title, points, submissionid 
      FROM submission 
      WHERE points >= '$sidepoints' 
     ORDER BY points DESC"; 

EDIT:私はpoints降順で注文した結果が欲しいです。

+0

はmysqlでそれらを表示したいか、あなたは、単に印刷する前に、PHPの配列にそれらを読んで、逆にすることができますか? – hackartist

+0

@hackartist PHP – John

+2

'array_reverse()' – Rufinus

答えて

2

は、別のクエリ(サブクエリ)を使用してクエリの結果を注文してみ

SELECT * FROM (
    SELECT title, points, submissionid 
    FROM submission 
    WHERE points >= '$sidepoints' 
    ORDER BY points ASC 
    LIMIT 5 
) t ORDER BY t.points DESC 
+0

エレガント。短くて甘い。ありがとう。 – John

1

MYSQLを使用している場合は、LIMITを使用してください。

$side = "SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points DESC 
     LIMIT 5"; 

ansi sqlはTOPを使用します。これは、SQL ServerのMySQLでは

$side = "SELECT TOP 5 title, points, submissionid 
      FROM submission 
      WHERE points >= '$sidepoints' 
      ORDER BY points DESC"; 
5

のために動作します:あなたは、次のPHPコードで上記のクエリを使用するか、別のSQLクエリを使用することができます

$side = "SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points ASC 
     LIMIT 5"; 

EDIT

PHP逆の結果(未テスト)

$q = mysql_query($side); 
$results = array(); 
while($r = mysql_fetch_assoc($q)) 
{ 
    $results[] = $r; 
} 
$results = array_reverse($results); 
foreach($results as $result) 
{ 
    echo $result['points']; // etc 
} 

またはSQL道 - ポイントASCのLIMIT 5 BY(テストされていないだけでなくthis postから見つかっ)

SELECT title, points, submissionid 
FROM (
    SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points ASC 
     LIMIT 5 
) AS t1 ORDER BY points DESC 
+0

いいえ...しかし、結果を降順で表示するにはどうすればよいですか? – John

関連する問題