我相信这个问题以前已经被问过了,但是我似乎找不到我要找的确切的东西。
我希望能够做一个正常类型的查询"TransactionsTable"我有,但然后查找并显示'machineDescription'从一个' MachineTable"作为结果的一部分。但是,我需要为发起事务的机器和关闭事务的机器执行两次查找。
还要注意'CreatedId' &'CompletedId' from "TransactionsTable"是我需要用来搜索' MachineTable"中的'machineDescription'的字段,但在这个表中该字段被称为'machineNumber'。
下面是一个table data的例子:-
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
---------------------------------------------------------------------
所以我想做一个普通的查询例如:-
SELECT * FROM TransactionsTable WHERE Status = "COMPLETE"AND 'CreatedDate'在' 2022-01-01 '之间和"2022 - 01 - 31 -";
但不知何故,我想查找'machineDescription'为'CreatedId' &'CompletedId',并为每条返回的记录输出它,所以它看起来像这样:-
CreatedId | CreatedDesc | Value | CreatedDate | CompletedId | CompletedDesc | CompletedDate | Status
---------------------------------------------------------------------
125 | X100-1 | 100 | 2022/01/01 | 127 | Z4000 | 2022/01/01 | COMPLETE
我假定有一个"JOIN"这句话在某个地方涉及到,但我似乎不能使它工作。
感谢任何帮助。由于
您只需要两次加入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将始终存在)。