0

我正在为一些朋友创建一个高尔夫比分跟踪数据库,并且在从结果中检索特定值的最佳方法方面遇到了麻烦。

我有桌子:

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。希望我的问题足够清楚。

谢谢!

4

1 回答 1

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/>';
}

这将为玩家输出结果。您可以对 mysql_* 函数执行相同的操作,但由于它们已被弃用,因此最好使用mysqliPDO

于 2012-07-24T21:40:07.040 回答