按最新日期、项目代码和与其他 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
- table "A":
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
- table "B":
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。
我有两个table:
table “A”,带有由项目代码(整数)标识的各种项目。每个项目出现多次,上传日期不同。 tables 还显示出售商品的商店(商店 ID- 整数)
table“B”,包含要绘制的所需项目代码(50 个项目)的列表。
我有兴趣根据第二个 table 上的项目代码从第一个 table 中提取(显示)项目。所选项目还应具有最长的上传日期并属于特定商店 ID(由我选择)。
例如:商品“大米”,商品代码为 - 77893。此商品代码在 table“B”上,表示我想展示它。在table“A”中,“米饭”有多个条目:
table exapmle
- table "A":
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
- table "B":
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。