登录
首页 >  数据库 >  MySQL

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

时间:2024-12-05 22:25:01 185浏览 收藏

本篇文章向大家介绍《如何在多表查询中获取某个公司的所有产品的最新检测报告?》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

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

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

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

有两张表,分别存储产品信息(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;

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

到这里,我们也就讲完了《如何在多表查询中获取某个公司的所有产品的最新检测报告?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>