2015-11-19 57 views
0

我已經閱讀了一百萬個關於排序數組的複雜問題。我有一些超級簡單的東西,但我只是無法圍繞它來包裹我的頭。簡單數組排序

我在我的數據庫中有一個表,有遊戲的分數。列標籤是team1_score和team_2分數。我意識到,如果所有的分數都在一列中,我可以用我的SQL查詢排序,但他們不是。

我需要知道如何從這些列獲取結果,並將其排序最高到最低,理想分配這些變量,如$ first_place和$ second_place

對不起,我是小白和在我來這裏之前我已經做了大量的研究,所以請溫柔。

所以,我有這樣的事情... 我的程序記錄了孩子們的營地分數,並且有多個營地。每一行都有id,camp_name,camp_logo,然後通過10個團隊進入team1_name,team1_logo,team1_score等等。理想情況下,我希望查詢獲取所有這些分數,並按降序排列,如第一名:xxx點(團隊名稱)(團隊徽標)

我可以使用此排序分數..

$query = "SELECT team1_score, team2_score FROM camps "; 
    $scores = mysqli_query($connection,$query); 
    $scores_array = mysqli_fetch_assoc($scores); 
    arsort($scores_array); 
    foreach ($scores_array as $key => $value) { 
    echo "score - [" . $key . "] = " . $value . "\n"; 
    } 

但我不知道如何將名稱和徽標與這些鍵相關聯。我希望這是有道理的。

+0

這很可能是一個創造性的'ORDER BY'條件(可以是任意表達式,不只是一個列名),你可能可以在SQL中完成它。你可以從你的表中發佈未排序行的樣本,以及你的排序操作後相同行的樣子嗎?我們將需要該示例來嘗試SQL排序或PHP代碼中的某些內容。 –

+0

感謝您回覆我!我的程序會記錄孩子們的分數,並且有多個陣營。每一行都有id,camp_name,camp_logo,然後通過10個團隊進入team1_name,team1_logo,team1_score等等。 理想情況下,我希望查詢獲取所有這些分數,並按降序排列,如第一名:xxx分(團隊名稱)(團隊徽標) –

+0

我可以用這個$ query = 「SELECT team1_score,team2_score FROM camps」; $ scores = mysqli_query($ connection,$ query); $ scores_array = mysqli_fetch_assoc($ scores); arsort($ scores_array); foreach($ scores_array as $ key => $ value){ echo「score - [」。 $鍵。 「] =」。 $值。 「\ n」 個; } 但我不知道如何將名稱和徽標與這些鍵相關聯。我希望這是有道理的。 –

回答

0

這個可以實際上是由SQL完成的。您可以通過它們使用greatestleast得到的頂部和底部的分數,分別,然後還要排序:

SELECT GREATEST(team1_score, team2_score), 
     LEAST(team1_score, team2_score) 
FROM  camps 
ORDER BY 1 DESC, 2 DESC 
+0

啊。我不知道。很高興知道。我可能應該解釋說,我的實際系統會增加到10支隊伍,所以最大/最小的隊伍不會真的在那裏工作,對吧?非常感謝你的反饋。 –