它採用mysql
而不是mysqli/pdo
使用舊代碼,所以不要擔心這個,我以後會更新該查詢。如何以更清晰的方式執行這些MySQL子查詢?
雖然我目前的方法工作,我敢肯定有這樣做,而不是查詢和3子查詢的更清潔的方式。我主要想學習如何更好地增強我的查詢並儘量減少它們的數量。
我想要做的是
echo
出每個日期的日期在那個特定的一天,在頂部- 顯示器所顯示的條目數爲每個用戶的所有數據用戶旁邊
對於每個日期,在數據的上述2個比特的底部,顯示用戶/ s的條目的最高數目
$query = mysql_query('SELECT * FROM entries GROUP BY DATE(dt)'); $g = 0; while ($row = @mysql_fetch_array($query)) { $group[$g] = date('y-m-d', strtotime($row['dt'])); echo $group[$g] . "<br />"; //display the person's name for today with their count $dayquery = mysql_query('SELECT *, COUNT(username) as total FROM entries WHERE DATE(dt) = "'.$group[$g].'" GROUP BY username ORDER BY COUNT(username) DESC'); while ($today = @mysql_fetch_array($dayquery)) { echo $today['first_name'] . " | " . $today['total'] . "<br />"; } //display the highest count for today $topquery = mysql_query('SELECT COUNT(username) as highest FROM entries WHERE DATE(dt) = "'.$group[$g].'" GROUP BY username ORDER BY COUNT(username) DESC LIMIT 1'); while ($toptoday = @mysql_fetch_array($topquery)) { echo "Highest today: " . $toptoday['highest'] . "<br /><br />" ; } //display the users with the highest count for today echo "Highest users: "; $userstopquery = mysql_query('SELECT *, COUNT(username) as total FROM entries WHERE DATE(dt) = "'.$group[$g].'" AND COUNT(username) = "' . $toptoday['highest'] . '" AND GROUP BY username'); while ($topusers = @mysql_fetch_array($userstopquery)) { echo $topusers['first_name'] . "<br />" ; } $g++; }
我有麻煩的是,當我嘗試和減少這些子查詢和使用MAX
它只會輸出最高計數但不是所有的每個日期,這正是我需要的,包括用戶的輸出/ s的數據這一天的最多條目。
簡單。請參閱JOIN。但第一個查詢(可能)是荒謬的。 – Strawberry
那麼你可以從查詢1的第一個或最後一排得到的答案查詢2,這取決於你如何查詢1同樣的回答結果進行排序,以查詢3在查詢1的結果。因此,假設查詢1您可以完全擺脫查詢2和3的作品 – RiggsFolly
@Strawberry如何在此實例中使用JOIN進行清理? –