-2

私は自分のサイトの 1 つでコンテストを作成しようとしています。私は PHP の初心者なので、あなたの助けを求めています。

私はこれまでこのコードを持っています

<?php
    $con = mysql_connect("localhost", "user", "pass");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("database",$con);
    $sql = "SELECT * FROM videos WHERE source = 0";
    $result = mysql_query($sql,$con);
    while ($row = mysql_fetch_object($result)) {
        $userid = $row->user_id;
        $points = $row->votes * $row->rating * $row->views;
        echo "UID: $row->user_id POINTS: $points <br />";
    }

$points降順での値が最も高い 3 つの結果だけをエコーする方法を教えてください。

4

3 に答える 3

0

次のようなことを試してください:

SELECT *, score = v.votes * v.ratings * v.views 
FROM videos AS v 
WHERE source = 0 
ORDER BY score DESC 
LIMIT 3

じぶな!

于 2013-03-31T16:35:34.793 に答える
0

SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 IS は、テーブル内のすべての要素から 1 つだけを表示していました。

于 2013-03-31T16:30:11.313 に答える
0
$sql = "SELECT * FROM videos WHERE source = 0 ORDER BY votes*rating*views DESC LIMIT 3";

これはパフォーマンス キラーであることに注意してください。表示されていない動画も含め、すべての動画のポイントが計算されます。別の列を検討することをお勧めします。おそらく、それを埋めるためのトリガーを使用します。

個人的には、これは良いスタイルだと思います。ポイント アルゴリズムを変更しようとする場合に役立ちます。

于 2013-03-31T16:27:42.160 に答える