php - 加入MySql PHP

标签 php mysql database

我创建了一个数据库,我使用 PHP 连接到数据库并查询它。有两个表 Drivers 和 Teams。驱动程序具有以下字段:

  • 编号
  • 名字
  • 姓氏
  • 国籍
  • 团队编号

团队有以下字段: - ID - 姓名 - 引擎 - 国籍 - 基于 - 原则

我正在尝试创建一个查询来显示车手的姓名、国籍和车队名称。

我使用了以下代码:

$result = mysqli_query($con, "SELECT * FROM Drivers
    JOIN Teams
    ON Drivers.id = Teams.id");

echo "<table border='1'>
    <tr>
        <th>forename</th>
        <th>surname</th>
        <th>Nationality</th>
        <th>Team</th>
    </tr>";

while($row = mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['forename'] . "</td>";
    echo "<td>" . $row['surname'] . "</td>";
    echo "<td>" . $row['nationality'] . "</td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "</tr>";
}
echo "</table>";

这是我得到的结果:

forename    surname Nationality Team
Sebastian   Vettel  Austrian    Red Bull
Mark    Webber  Italian Ferrari
Jenson  Button  British Mclaren
Lewis   Hamilton    German  Mercedes
Fernando    Alonso  British Lotus
Felipe  Massa   Indian  Force India
Michael Schumacher  Swiss   Sauber
Nico    Rosberg Italian Torro Rosso
Kimi    Raikkonen   British Williams
Romain  Grosjean    British Caterham
Jerome  d'Ambrosio  Spanish HRT
Paul    di Resta    Russian Marussia

但是结果并未显示所有驱动程序。我做错了什么?

最佳答案

您需要加入 drivers.team_id 而不是 drivers.id。

你还应该做一个左连接,这样没有车队的司机仍然会被选中:

SELECT * FROM Drivers LEFT JOIN Teams ON Drivers.team_id = Teams.id

关于php - 加入MySql PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823257/

相关文章:

php - PHP中插入数据到表

C# MySQLDataReader 在结果中替换

javascript - 如何在sequelize上查询共享id表

sql - 使用 UNION 运算符在 SQL View 上创建索引?它真的会提高性能吗?

php - 试图在数据库中存储多个值,但我的表单只注册一个(通过复选框)

php - Phalcon PHP 扩展和覆盖 "update"和 "insert"函数

PHP - GetSQLValueString 函数

mysql - 我的 Mysql select 查询每次运行时运行速度都变慢

php - MySQL 如何连接两个不同数据库中的两个表?

php 每个主题最后只有 100 条评论