php - 需要 MySQL 18 个查询,还是我可以只使用一个?

标签 php mysql

我正在为一些 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_* 函数执行相同的操作,但由于它们已被弃用,因此最好使用 mysqliPDO

关于php - 需要 MySQL 18 个查询,还是我可以只使用一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639027/

相关文章:

php - Woocommerce:从最新订单获取数据

php - .htaccess 重定向文件类型

mysql - 如何在 MySQL 中找到当时的最低值(单圈记录)?

mysql - 从另一个表添加到 VIEW

php - str_replace 不适用于数据库返回

MySQL 错误 1054 :UNKNOWN COLUMN 'amount' in field list

php - 无法在 Windows 7 XAMPP 上安装 gmagick

php - 如何在curl帖子中使用变量?

php - Symfony2 Twig 包括 Assets 无法正常工作的 header

mysql - 希伯来语的 sql 正则表达式