我有两个表(会有更多):"提供者"和"位置"

PROVIDERS表:

| provider_id | provider_name | departure_id | destination_id |
| ----------- | ------------- | ------------ | -------------- |
|      1      |     DEVO      |      1       |       2        |
|      2      |     PEPO      |      2       |       1        |

LOCATIONS张桌子

                                 (not needed)      (not needed)
| location_id | location_name |location_address |  location_geo  |
| ----------- | ------------- | --------------- | -------------- |
|      1      |     Paris     |   address_111   |     2222       |
|      2      |     London    |   address_222   |     3333       |

我使用的是Python,并从数据库中获取数据.我需要PROVIDERS的所有行,但使用SQL等待这样的结果

[ (1, 'DEVO', 'Paris', 'London'), (2, 'PEPO', 'London', 'Paris') ]

我需要使用什么请求,从PROVIDERSSELECT个数据,并用名称更改ID?

谢谢.

我试过INNER JOIN号S、JOIN号S等,但我肯定我犯了一个愚蠢的错误,我不明白那是什么……我收到空列表或ID不变的列表

预期:

[ (1, 'DEVO', 'Paris', 'London'), (2, 'PEPO', 'London', 'Paris') ]

推荐答案

您可以多次联接到同一个表,并通过表别名来区分它们.对于生产查询,您永远不应该只指定SELECT *个;始终指定准确的列名:

SELECT p.provider_id, p.provider_name
   ,ls.location_name as departure_name, ld.location_name as destination_name
FROM Providers p
INNER JOIN Locations ls ON ls.location_id = p.departure_id
INNER JOIN Locations ld ON ld.location_id = p.destination_id

Sql相关问答推荐

将SEMI JOIN、ANTI JOIN转换为非连接SQL

如何解决Error:operator is not unique:unknown—unknown在一个动态SQL查询?""""

基于列对多行求和的查询

从2个表中查找每条记录的唯一最接近的日期匹配

SQL—如何在搜索的元素之后和之前获取元素?

Android房间fts4匹配语法AND OR

替换上一个或下一个值中的空值并添加其价格日期

如何在Postgres中为单值输入多行?

如何解决错误;ORA-00911:无效字符;在果朗?

根据日期 Select ID 的上一条记录

在 PostgreSQL 中生成时间序列查询

将时间戳四舍五入到最近 10 分钟的查询

基于字符串的SQL查询

SQL 函数 DIFFERENCE 返回有趣的分数

使用in和and运算符过滤记录的条件

我如何编写一个遍历数组数组并将所有值连接成一个字符串的 postgres 函数

存储过程 - 动态 SQL 中不同列值的计数

交叉应用 OPENJSON / PIVOT - 错误的顺序

SQL Group By 然后映射出是否存在值

从多个连接返回 1 行到同一个表 - SQL Server