我正在为一些朋友创建一个高尔夫分数跟踪数据库,但我遇到了从结果中检索特定值的最佳方法。
我有桌子:
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查询我可以使用? Hole表也作为圆形标识符,因此不必担心确定我需要哪个HoleID的NumStrokes。顺便说一下,我正在使用PHP。希望我的问题很清楚。
谢谢!
答案 0 :(得分:1)
$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/>';
}