猿问

如何使用 JOIN 运算符正确地回显 SQL 表的结果?

我有两张桌子:


俱乐部


    |---------------------|------------------|

    |          id         |       name       |

    |---------------------|------------------|

    |           1         |      Arsenal     |

    |---------------------|------------------|

    |           2         |      Chelsea     |

    |---------------------|------------------|

    |           3         |      Fulham      |

    |---------------------|------------------|

    |           4         |      Leeds       |

    |---------------------|------------------|

火柴


    |---------------------|------------------|------------------|

    |          id         |       home       |        away      |

    |---------------------|------------------|------------------|

    |           1         |        1         |         3        |

    |---------------------|------------------|------------------|

    |           2         |        2         |         4        |

    |---------------------|------------------|------------------|

说明: Matches 表中“home”和“away”列中的数字链接到 de Clubs 表中的 id。


现在我想回显(用 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>


我的问题:如何在表格中显示俱乐部名称,但在“a href”链接中传递俱乐部 ID?我试过 $row[1] 等等,但它不起作用。我需要哪个 SQL 语句?加入?内部联接?左连接?


提前谢谢了!


慕妹3146593
浏览 73回答 1
1回答

RISEBY

我相信这应该有效 - 我对您的查询进行了调整。当您对查询的左侧(匹配项)感兴趣并且不关心俱乐部是否未填充时,您可以使用左连接。F ex 如果您有主客场 1 和 5。我们知道 1 是阿森纳,但在俱乐部中没有 5 的条目。Left join 会显示它,inner join 不会。<?php$sql = "SELECT home,away,homeclub.name as homename,awayclub.name&nbsp; as awayname FROM matches&nbsp;JOIN clubs as homeclub ON matches.home = homeclub.idJOIN clubs as awayclub ON matches.away = awayclub.id"$rs_result = $conn->query($sql);?>&nbsp;<div style="overflow-x:auto"><table><tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr><?php&nbsp; &nbsp; &nbsp;while($row = $rs_result->fetch_assoc()) {?>&nbsp;<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 } ?>&nbsp;&nbsp;</table></div>
随时随地看视频慕课网APP
我要回答