-2

我正在尝试在我的一个网站上进行比赛,我是 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
$sql = "SELECT * FROM videos WHERE source = 0 ORDER BY votes*rating*views DESC LIMIT 3";

请注意,这是一个性能杀手:它将计算所有视频的分数,包括那些未显示的视频。您可能想考虑一个单独的列,也许有一个触发器来填充它。

我个人认为这是一种很好的风格 - 如果您尝试更改积分算法,它会有所帮助。

于 2013-03-31T16:27:42.160 回答
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

尝试这样的事情:

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 回答