mysql - Mysql问题,如何使用选择进行有序双连接
问题描述
我有一个非常奇怪的问题,我似乎无法解决。
我有 2 个表,一个请求表和一个仓库表。
在我的请求中:
Material,Identifier,FulfillDateTime
在仓库表中,我有:
Material,Identifier,Position,DateofEntry
我需要做的是以下几点:
我正在搜索一种特定类型的材料('TypeA%') - 找到后,我需要将通过同一标识符定位的另一种材料('TypeB%')与此相关联。这始终只返回一个结果,这意味着对于该特定材料请求,标识符是相同的,该特定材料请求始终包含每种材料类型的单个材料。
在此之后,我需要检查仓库表,其中使用找到的特定材料类型 (TypeB),并按照最旧的 DateOfEntry 排序的位置。
我想不通的是,我的查询在仓库中返回了相同的材料,但我需要按进入日期返回的有序列表中的“下一个”。
我期望的是一个看起来像这样的结果表,按fulfillDateTime 排序
MaterialTypeA,Identifier,FulfillDateTime,Position,DateOfEntry
我正在使用的当前查询是这个(它是错误的,因为它从仓库表中正确返回,但它为每一行返回相同的材料,并且它不是由 dateofentry '排序'。
SELECT
*
FROM
requests
LEFT JOIN
(
select
Identifier as B_Identifier,
Material as B_Material,
FulfillDateTime
from
requests
LEFT JOIN (
SELECT
Material,
Identifier,
Position,
DateofEntry
FROM
warehouse
where
Material like 'TypeB%'
order by
DateofEntry desc
)
as d
on Material = Material
where
requests.Material like 'TypeB%'
)
as t
on requests.Identifier = t.Identifier
where
requests.Material LIKE 'TypeA%' and
(DATE(DateofEntry) BETWEEN DATE(NOW()) AND (DATE(NOW() + INTERVAL 1 DAY)))
group by
requests.Identifier
order by
DateofEntry desc;
有人可以将我推向正确的方向吗?
基本上这是从仓库制作一个拣货单,每种物料都附加了另一种物料,对于该物料,我们需要去仓库中获取最旧的物料。该列表应包含倒序排列的所有材料。
解决方案
推荐阅读
- python - 熊猫:从存储为列值的列表中创建新列
- android - 如何在 Flutter_webview 中显示或下载 pdf 文件?
- javascript - 如何将输入转换为事件监听器
- javascript - ReactJS - onClick 不会调用 map() 函数中的函数
- javascript - Javascript - 将控制台/DOM 输出作为单个 JSON 输出返回
- java - 为什么 HATEOAS 在使用 Swagger 2.x 启动期间开始为 spring-boot 版本 >= 2.2.x 创建问题?
- python - 检查数千个网址的最快方法是什么?
- c# - 如何上传带有附加参数的 IFormFile
- android - 如何从其他应用程序/项目调用 Android 辅助服务?
- python - 如何仅记录 StreamHandler 日志?