2013-03-31 78 views
-2

我想在我的一個網站上進行比賽,我是PHP新手,所以我要求您的幫助。PHP如何提取3個結果

我有這樣的代碼到目前爲止

<?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 />"; 
    } 

有誰能告訴我,請我怎麼可以重複剛剛3分的結果,那些與$points最高值,按降序排列?

+0

我強烈建議使用mysqli或PDO而不是棄用的mysql擴展名。 –

+1

@Wrikken玩得不錯。每個人都從某處開始。你的語氣沒有建設性。 –

回答

0

嘗試這樣:

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

子布納!

0
$sql = "SELECT * FROM videos WHERE source = 0 ORDER BY votes*rating*views DESC LIMIT 3"; 

注意,這是一個性能殺手:它會計算所有視頻的點數,包括那些未顯示的點數。你可能想考慮一個單獨的列,也許用一個觸發器來填充它。

我個人認爲這是很好的風格 - 它有助於,如果你曾嘗試改變點算法。

+0

謝謝,我不介意性能,因爲這個腳本將安裝的頁面不會有太多的意見,我有一個強大的服務器 –

0

SELECT列名(S)FROM table_name1 UNION SELECT列名(S)FROM table_name2 IS只是告訴你1個裏面關閉表中的所有元素。