php中文网

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

php中文网

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

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

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

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

以上就是如何在多表查询中获取某个公司的所有产品的最新检测报告?的详细内容,更多请关注php中文网其它相关文章!