Hello! 欢迎来到小浪云!


如何在多表查询中获取某个公司的所有产品的最新检测报告?


avatar
小浪云 2024-11-11 36

如何在多表查询中获取某个公司的所有产品的最新检测报告?

如何在多表查询中获取某个公司的最新检测报告?

在多表查询中,我们需要考虑如何从不同表中提取相关数据。考虑以下场景:

有两张表,分别存储产品信息(pro)和检测信息(procheck),其中 procheck 中的 pro_id 与 pro 中的 id 关联,每个产品可能对应多个检测信息记录。

现在我们要查询某个特定公司(company_id)生产的所有产品的最新一次检测报告。虽然可以使用类似以下的查询,但它会返回所有检测报告:

select `pro`.`id`,`pro`.`pm`,`pro`.`company_id`,procheck.id as procheck__id,procheck.pro_id as procheck__pro_id,procheck.checkdate as procheck__checkdate from `da_pro` `pro`  left join `da_procheck` `procheck` on `pro`.`id`=`procheck`.`pro_id` where `pro`.`company_id` = 487
登录后复制

为了获取最新的检测报告,我们需要进一步筛选信息。首先,我们需要查询 procheck 表中的每个产品的最新 checkdate

select pro_id, max(checkdate) as max_checkdate from procheck group by pro_id
登录后复制

然后,我们将此结果与初始查询的表(称为 t1)进行连接,并使用 procheck__pro_id 和 procheck__checkdate 进行匹配。最终的查询如下:

SELECT t1.* FROM t1 JOIN (     SELECT pro_id, MAX(checkdate) AS max_checkdate     FROM procheck     GROUP BY pro_id ) t2 ON t1.procheck__pro_id = t2.pro_id AND t1.procheck__checkdate = t2.max_checkdate;
登录后复制

这样就能得到某个特定公司生产的所有产品的最新一次检测报告。

相关阅读