我正在为一些 friend 创建高尔夫成绩跟踪数据库,但无法找到从结果中检索特定值的最佳方法。
我有 table :
Players - stores player info
Hole - stores basic info about a hole (CourseID, HoleNum, Par...)
Score - stores each hole they played (HoleID, NumStrokes...)
我的目标是输出一个表格,显示每个洞 (1-18) 的结果。以下查询获取他们打过的所有洞的列表以及他们完成该洞所需的杆数。
SELECT Hole.HoleID, NumStrokes
FROM Players
INNER JOIN Score ON Score.PlayerID = Players.PlayerID
INNER JOIN Hole ON Score.HoleID = Hole.HoleID
WHERE Players.PlayerID = '$PlayerID'
结果如下:
HoleID NumStrokes
1 4
1 6
1 3
2 5
7 3
我是否必须通过添加以下内容来运行 18 个不同的查询,每个查询对应我输出的每个孔:
AND Hole.HoleID = '$HoleID'
我的查询,或者是否有更好的 SQL 查询可供我使用?孔表也作为回合标识符,因此不必担心确定我需要的 HoleID 的 NumStrokes。顺便说一句,我正在使用 PHP。希望我的问题足够清楚。
谢谢!
最佳答案
$conn = new mysqli('host','user','pass','db_name');
$PlayerID = (int) $_GET['PlayerID'];
$rs = $conn->query("
SELECT Hole.HoleID, NumStrokes
FROM Players
INNER JOIN Score ON Score.PlayerID = Players.PlayerID
INNER JOIN Hole ON Score.HoleID = Hole.HoleID
WHERE Players.PlayerID = $PlayerID
") or die($conn->error);
while($row = $rs->fetch_object()) {
echo $row->HoleID.' - '.$row->NumStrokes.'<br/>';
}
这将输出玩家的结果。您可以对 mysql_* 函数执行相同的操作,但由于它们已被弃用,因此最好使用 mysqli或PDO
关于php - 需要 MySQL 18 个查询,还是我可以只使用一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639027/