如何使用 JOIN 运算符正确回显来自 SQL table 的结果?
How to echo results from SQL table correctly using JOIN operator?
我有两个 table:
俱乐部
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | Arsenal |
|---------------------|------------------|
| 2 | Chelsea |
|---------------------|------------------|
| 3 | Fulham |
|---------------------|------------------|
| 4 | Leeds |
|---------------------|------------------|
匹配
|---------------------|------------------|------------------|
| id | home | away |
|---------------------|------------------|------------------|
| 1 | 1 | 3 |
|---------------------|------------------|------------------|
| 2 | 2 | 4 |
|---------------------|------------------|------------------|
解释: "home" 和 "away" 列中的数字匹配 table linking id in de Clubs table.
现在我想回应(用 php)以下内容:
|---------------------|------------------|
| home | away |
|---------------------|------------------|
| Arsenal | Fulham |
|---------------------|------------------|
| Chelsea | Leeds |
|---------------------|------------------|
说明: 当点击团队名称时,我想打开 club.php 包含团队信息的页面。
我试过以下方法:
<?php
$sql = "SELECT * FROM matches JOIN clubs ON matches.home AND matches.away = clubs.id"
$rs_result = $conn->query($sql);
?>
<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>
<?php
while($row = $rs_result->fetch_assoc()) {
?>
<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['home']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['away']; ?></a></td>
</tr>
<?php } ?>
</table></div>
它正在回应以下内容:
|---------------------|------------------|
| home | away |
|---------------------|------------------|
| 1 | 3 |
|---------------------|------------------|
| 2 | 4 |
|---------------------|------------------|
我的问题: 如何在 table 中显示俱乐部名称,但在 "a href" link 中传递俱乐部 ID?
我试过 $row[1] 等等,但它不起作用。我需要哪个 SQL 语句?加入?内部联接?左连接?
非常感谢!
我相信这应该可行 - 我对您的查询进行了调整。
当您对查询的左侧(匹配项)感兴趣并且不关心俱乐部是否未填充时,您可以使用左连接。 F ex 如果您有主客场 1 和 5。我们知道 1 是阿森纳,但在俱乐部中没有 5 的条目。
Left join会显示,inner join不会显示。
<?php
$sql = "SELECT home,away,homeclub.name as homename,awayclub.name as awayname FROM matches
JOIN clubs as homeclub ON matches.home = homeclub.id
JOIN clubs as awayclub ON matches.away = awayclub.id"
$rs_result = $conn->query($sql);
?>
<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>
<?php
while($row = $rs_result->fetch_assoc()) {
?>
<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['homename']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['awayname']; ?></a></td>
</tr>
<?php } ?>
</table>
</div>
我有两个 table:
俱乐部
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | Arsenal |
|---------------------|------------------|
| 2 | Chelsea |
|---------------------|------------------|
| 3 | Fulham |
|---------------------|------------------|
| 4 | Leeds |
|---------------------|------------------|
匹配
|---------------------|------------------|------------------|
| id | home | away |
|---------------------|------------------|------------------|
| 1 | 1 | 3 |
|---------------------|------------------|------------------|
| 2 | 2 | 4 |
|---------------------|------------------|------------------|
解释: "home" 和 "away" 列中的数字匹配 table linking id in de Clubs table.
现在我想回应(用 php)以下内容:
|---------------------|------------------|
| home | away |
|---------------------|------------------|
| Arsenal | Fulham |
|---------------------|------------------|
| Chelsea | Leeds |
|---------------------|------------------|
说明: 当点击团队名称时,我想打开 club.php 包含团队信息的页面。
我试过以下方法:
<?php
$sql = "SELECT * FROM matches JOIN clubs ON matches.home AND matches.away = clubs.id"
$rs_result = $conn->query($sql);
?>
<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>
<?php
while($row = $rs_result->fetch_assoc()) {
?>
<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['home']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['away']; ?></a></td>
</tr>
<?php } ?>
</table></div>
它正在回应以下内容:
|---------------------|------------------|
| home | away |
|---------------------|------------------|
| 1 | 3 |
|---------------------|------------------|
| 2 | 4 |
|---------------------|------------------|
我的问题: 如何在 table 中显示俱乐部名称,但在 "a href" link 中传递俱乐部 ID? 我试过 $row[1] 等等,但它不起作用。我需要哪个 SQL 语句?加入?内部联接?左连接?
非常感谢!
我相信这应该可行 - 我对您的查询进行了调整。 当您对查询的左侧(匹配项)感兴趣并且不关心俱乐部是否未填充时,您可以使用左连接。 F ex 如果您有主客场 1 和 5。我们知道 1 是阿森纳,但在俱乐部中没有 5 的条目。 Left join会显示,inner join不会显示。
<?php
$sql = "SELECT home,away,homeclub.name as homename,awayclub.name as awayname FROM matches
JOIN clubs as homeclub ON matches.home = homeclub.id
JOIN clubs as awayclub ON matches.away = awayclub.id"
$rs_result = $conn->query($sql);
?>
<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>
<?php
while($row = $rs_result->fetch_assoc()) {
?>
<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['homename']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['awayname']; ?></a></td>
</tr>
<?php } ?>
</table>
</div>