多表查詢最新檢測報告
求取特定公司下所有產品的最新檢測報告,通常要進行多表查詢。本文將通過處理產品信息表和檢測信息表兩個表的關聯(lián)數據,解決此問題。
給定兩張表:產品信息表 pro 和檢測信息表 procheck。pro 表中 company_id 字段用于關聯(lián)公司信息,而 procheck 表中的 pro_id 字段與 pro 表中的 id 字段關聯(lián),每個產品對應多個檢測信息記錄。
初始查詢如下:
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
登錄后復制
這個查詢可返回該特定公司的所有產品及相關檢測信息。然而,我們需要僅找出每個產品的最新檢測報告。
可以使用如下改良后的查詢:
(你的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;
登錄后復制
這個查詢通過以下步驟得出最新檢測報告:
- 使用子查詢求出 procheck 表中每個產品對應的最新 checkdate,形成臨時表 t2。
- 將 t1 和 t2 在 pro_id 和 checkdate 字段上進行連接,確保僅選擇 procheck 表中的最新檢測報告。
- 最終結果中將包含該特定公司下的所有產品的最新檢測報告。