选择两个引用相同主键表的外键的名称

问题描述

我有一个库存交易表Transaction_Log

列为log_idto_warehousefrom_warehouse,这两个指向仓库表OWHS的外键都具有列whs_idwhs_name

我需要输出以下列:log_idto_warehouse_namefrom_warehouse_name

尝试过

SELECT t.log_id,w1.whs_name AS to_warehouse_name,w2.whs_name from_warehouse_name
FROM OWHS w1,OWHS w2
 INNER JOIN Transaction_Log t ON w1.whs_id = t.to_warehouse AND w2.whs_id = t.from_warehouse

但是会引发错误

无效的表名:w1.whs_id

我不确定查询是否正确以输出所需的内容,但错误已使我失望。

我使用SAP HANA数据库,但是我对此文章的列名做了一些更改。几年后,我也将返回数据库编程,因此,如果这是一个基本问题,我深表歉意,但是我的谷歌搜索工作并没有返回我想要的结果。

解决方法

从不FROM子句中使用逗号。期。将查询写为:

SELECT t.log_id,w1.whs_name AS to_warehouse_name,w2.whs_name from_warehouse_name
FROM OWHS w1 JOIN
     Transaction_Log t
     ON w1.whs_id = t.to_warehouse JOIN
     OWHS w2
     ON w2.whs_id = t.from_warehouse;

尽管您可以也可以通过将,替换为CROSS APPLY来解决该问题,这只会使逻辑混乱。您正在寻找两个简单的JOIN