具有内部连接和两个foreing键的查询表数据

iyfamqjs  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(454)

我有以下两张table:

  1. <html>
  2. <head>
  3. <style>
  4. table, th, td {
  5. border: 1px solid black;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <table>
  11. <tr>
  12. <th>airport</th>
  13. </tr>
  14. <tr>
  15. <td>id_airport</td>
  16. </tr>
  17. <tr>
  18. <td>name_airport</td>
  19. </tr>
  20. </table>
  21. <h4>and</h4>
  22. </body>
  23. </html>
  24. <html>
  25. <head>
  26. <style>
  27. table, th, td {
  28. border: 1px solid black;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <table>
  34. <tr>
  35. <th>route</th>
  36. </tr>
  37. <tr>
  38. <td>id_route</td>
  39. </tr>
  40. <tr>
  41. <td>id_airport_origin</td>
  42. </tr>
  43. <tr>
  44. <td>id_airport_destination</td>
  45. </tr>
  46. </table>
  47. </body>
  48. </html>

route.id\u airport\u origin和route.id\u airport\u destination都是airport.id\u airport的外键
我需要查询与其foreing键匹配的name\u airport列。
我试图执行以下查询,但没有成功。

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

我尝试了以上代码的几种组合,但无法获得正确的查询。
有什么想法吗?

s71maibg

s71maibg1#

您的查询不返回任何行,因为您要查找的机场的id等于这两个值 id_airport_origin 以及 id_airport_destination 路线:显然这不能匹配(。。。除非路线的起点和终点相同)。
insead,您需要两次加入airport表,一次用于起点,另一次用于目的地:

  1. select
  2. r.id_route,
  3. ao.name_airport name_airport_origin
  4. ad.name_airport name_airport_destination
  5. from route r
  6. inner join airport ao on ao.id_airport = r.id_airport_origin
  7. inner join airport ad on ad.id_airport = r.id_airport_destination

相关问题