问一个多表查询的简单问题?

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

但是得出的结果却是:
image.png

全部给我找了出来,而我真正需要的是箭头上的三条即可。
求SQL语句.....

阅读 829
1 个回答

先查询出procheck表里每个产品对应最新的checkdate,再拿你的结果连接一下作筛选

(你的SQL语句) 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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏