繁体   English   中英

在一个表上创建一个 MySQL 查询,并从第一个表中的字段值中查找第二个表中的字段值

[英]Create a MysQL Query on one table and also lookup the value of a field in a second table from field values in 1st table

我确定以前有人问过这个问题,但我似乎无法找到我正在寻找的确切内容。

我希望能够对我拥有的“TransactionsTable”进行正常的查询,然后从“MachineTable”中查找并显示“machineDescription”作为我的结果的一部分。 但是,我需要对启动事务的机器和关闭事务的机器进行两次查找。

另请注意,“TransactionsTable”中的“CreatedId”和“CompletedId”是我需要用于在“MachineTable”中搜索“machineDescription”的字段,但在此表中,该字段称为“machineNumber”。

这是表格数据的示例:-

事务表

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
---------------------------------------------------------------------

机台

machineNumber |  machineDescription |  machineStatus 
---------------------------------------------------------------------
125           |  X100-1             |  ONLINE
126           |  X100-2             |  ONLINE
127           |  Z4000              |  OFFLINE  
---------------------------------------------------------------------

所以我想做一种普通的查询,例如:-

SELECT * FROM TransactionsTable WHERE Status = "COMPLETE" AND 'CreatedDate' BETWEEN "2022-01-01" AND "2022-01-31";

但不知何故,我想同时为“CreatedId”和“CompletedId”查找“machineDescription”,并为返回的每条记录输出它,所以它看起来像这样:-

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 中的行将始终存在,则使用内部联接而不是左联接)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM