動作する次のコードがありますが、あまり効率的ではないことがわかっており、おそらくこれを単一の SQL クエリに統合できます。気にする必要がありますか?もしそうなら、どのように?
function get_rnds_by_judge($judge_id) {
global $connection;
$sql = "SELECT *
FROM Round_User
LEFT JOIN Round
ON Round_User.RndID = Round.RndID
WHERE Round_User.UserID = '$judge_id'
";
$rnd_set = mysql_query($sql, $connection);
confirm_query($rnd_set);
return $rnd_set;
}
function get_users_by_round_and_role($round_id, $role_id) {
global $connection;
$sql = "SELECT *
FROM User
LEFT JOIN Round_User
ON User.UserID = Round_User.UserID
WHERE Round_User.RndID = '$round_id' and User.UserRoleID = '$role_id'
";
$rnd_set = mysql_query($sql, $connection);
confirm_query($rnd_set);
return $rnd_set;
}
$rnd_set = get_rnds_by_judge($_SESSION[UserID]);
while($rnd_row = mysql_fetch_array($rnd_set)){
echo "<li data-role=\"list-divider\">";
echo $rnd_row[RndTitle];
echo "</li>";
$rs_set = get_users_by_round_and_role($rnd_row[RndID], 7);
while($rs_row = mysql_fetch_array($rs_set)){
echo "<li>";
echo "<a href=\"#\">{$rs_row[UserFirstName]}</a>";
echo "</li>";
}
}
つまずいた部分は、結合テーブルからRndID
andを取得し、2 つの異なるテーブルからデータを取得して、すべてを元に戻す方法です。UserID
Round_User