使用内部联接和两个前键查询表数据

aldehc99

我有以下两个表:

<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
}
</style>
</head>
<body>

<table>
  <tr>
    <th>airport</th>
  </tr>
  <tr>
    <td>id_airport</td>
  </tr>
  <tr>
    <td>name_airport</td>
  </tr>
</table>

<h4>and</h4>

</body>
</html>

<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
}
</style>
</head>
<body>

<table>
  <tr>
    <th>route</th>
  </tr>
  <tr>
    <td>id_route</td>
  </tr>
  <tr>
    <td>id_airport_origin</td>
  </tr>
  <tr>
    <td>id_airport_destination</td>
  </tr>
</table>

</body>
</html>

route.id_airport_origin和route.id_airport_destination都是airport.id_airport的外键

我需要查询与其前键匹配的name_airport列。

我尝试执行以下查询没有成功。

SELECT route.id.route, airport.name_airport, airport.name_airport
FROM route
INNER JOIN airport ON route.id_airport_origin AND route.id_airport.destination = airport.id_airport

我尝试了上述代码的几种组合,但无法获得正确的查询。

有任何想法吗?

专线小巴

您的查询不保留任何行,因为您要查找的IDid_airport_originid_airport_destination该路线的ID都等于和两者的机场:很显然,这不能匹配(...,除非该路线的起点和终点相同)。

在Insead,您需要两次连接机场表,一次是起点,另一次是终点:

select
    r.id_route,
    ao.name_airport name_airport_origin
    ad.name_airport name_airport_destination
from route r
inner join airport ao on ao.id_airport = r.id_airport_origin
inner join airport ad on ad.id_airport = r.id_airport_destination

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章