按最新日期、项目代码和与其他 table 的比较检索项目

Retrieve items by latest date, item code and comparison to additional table

我有两个table:

table “A”,带有由项目代码(整数)标识的各种项目。每个项目出现多次,上传日期不同。 tables 还显示出售商品的商店(商店 ID- 整数)

table“B”,包含要绘制的所需项目代码(50 个项目)的列表。

我有兴趣根据第二个 table 上的项目代码从第一个 table 中提取(显示)项目。所选项目还应具有最长的上传日期并属于特定商店 ID(由我选择)。

例如:商品“大米”,商品代码为 - 77893。此商品代码在 table“B”上,表示我想展示它。在table“A”中,“米饭”有多个条目:

table exapmle

item_name | item_code | upload_date | store_id

米饭 | 77893 | 2021-11-18 | 001

米饭 | 77893 | 2020-05-30 | 011

米饭 | 77893 | 2020-11-02 | 002

苹果 | 90837 | 2020-05-14 | 002

苹果 | 90837 | 2020-05-14 | 020

米饭 | 77893 | 2020-05-15 | 002

苹果 | 90837 | 2020-01-08 | 002

米饭 | 77893 | 2020-05-15 | 005

item_code

90837

77893

输出:

item_name | item_code | upload_date | store_id

米饭 | 77893 | 2020-11-02 | 002

苹果 | 90837 | 2020-05-14 | 002

“大米”和“苹果”的项目代码也在 table“B”上。在此示例中,我对商店 002 出售的商品感兴趣。

到目前为止,我只设法 return 该项目的最新上传日期。但是,我手动插入了项目代码,也无法过滤 store_id。

任何关于如何执行此想法的帮助或指南都将非常有帮助。

谢谢!

过滤 table A 中您想要的商店的行和您在 table B 中拥有的商品,然后聚合以获取具有最大日期的行:

SELECT item_name, MAX(upload_date) upload_date, store_id
FROM A 
WHERE store_id = '002' AND item_name IN (SELECT item_name FROM B)
GROUP BY item_code;

或者,通过连接:

SELECT A.item_name, MAX(A.upload_date) upload_date, A.store_id
FROM A INNER JOIN B
ON B.item_code = A.item_code
WHERE A.store_id = '002'
GROUP BY A.item_code;

参见demo