我肯定这是以前问过的,但我似乎找不到我要找的东西。
我希望能够对我拥有的"TransactionsTable“进行一种正常的查询,但是作为结果的一部分,我希望能够查找并显示来自"MachineTable”的'machineDescription‘。但是,对于启动事务的机器和关闭事务的机器,我需要进行两次查找。
还请注意,“CreatedId”和"TransactionsTable“中的'CompletedId‘是我需要用来搜索"MachineTable”中的'machineDescription’的字段,但是在这个表中,这个字段被称为'machineNumber‘。
以下是表数据的一个示例:-
TransactionsTable
CreatedId | Value | CreatedDate | CompletedId | CompletedDate | Status
---------------------------------------------------------------------
125 | 100 | 2022/01/01 | 127 | 2022/01/01 | COMPLETE
126 | 100 | 2022/01/05 | NULL | NULL | ACTIVE
127 | 100 | 2022/01/12 | 126 | 2022/01/14 | COMPLETE
---------------------------------------------------------------------MachineTable
machineNumber | machineDescription | machineStatus
---------------------------------------------------------------------
125 | X100-1 | ONLINE
126 | X100-2 | ONLINE
127 | Z4000 | OFFLINE
---------------------------------------------------------------------所以我想做一个正常的查询,例如:-
在"2022-01-01“和”2022-01-31“之间选择* FROM TransactionsTable中的Status = "COMPLETE”和'CreatedDate‘;
但不知何故,我想同时查找“machineDescription”和“CreatedId”和“CompletedId”,并为每条记录返回它的输出,所以如下所示:-
CreatedId | CreatedDesc | Value | CreatedDate | CompletedId | CompletedDesc | CompletedDate | Status
---------------------------------------------------------------------
125 | X100-1 | 100 | 2022/01/01 | 127 | Z4000 | 2022/01/01 | COMPLETE我猜想其中包含了一条“联接”语句,但我似乎无法让它发挥作用。
任何帮助都很感激。谢谢
发布于 2022-06-23 21:56:12
您只需要两次加入MachineTable,一次就可以查找每个描述:
select t.CreatedId, m1.machineDescription as CreatedDesc, t.CompletedId, m2.machineDescription as CompletedDesc
from TransactionsTable t
left join MachineTable m1 on m1.machineNumber=t.CreatedId
left join MachineTable m2 on m2.machineNumber=t.CompletedId(或者,如果总是设置CreatedId/CompletedId,并且machineDescription中的行将始终在那里,则内部联接而不是左连接)。
https://stackoverflow.com/questions/72713910
复制相似问题