我创建了一个数据库,我使用 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/