ถ้าเราต้องการให้มันแสดงข้อมูล remark ล่าสุด เนื่องจาก Asset_id มีการโอนย้าย ทำรายการได้หลายครั้ง
โดยดึงมาจากวันที่ทำรายการล่าสุด
แต่แสดงก็ต่อเมื่ออนุมัติครบแล้ว status = 1
แต่ถ้ายังไม่อนุมัติครบก็ให้แสดงเป็น ข้อมูล remake เดิมก่อน status = 0,2,3,4
Code (SQL)
SELECT * FROM asset AS t1
LEFT JOIN (SELECT b.ast_id,a.trn_remark ,a.trn_status
FROM asset_transfer_head a
INNER JOIN (
SELECT ast_id, MAX(trn_move_dt)trn_move_dt, trn_id
FROM asset_transfer_detail
GROUP BY ast_id
) b ON a.trn_id = b.trn_id
AND b.trn_move_dt=b.trn_move_dt
AND a.trn_status = '1' // พอเป็น Status 0,2,3,4 กลายเป็นไม่แสดง Remark ก่อนหน้านั้นด้วย
) as p ON t1.asset_id = p.ast_id
where t1.status_gotoadmin=0
ORDER BY t1.asset_id DESC LIMIT $start, $per_page";
SELECT *
FROM asset AS t1
LEFT JOIN (
SELECT b.ast_id,
a.trn_remark,
a.trn_status
FROM asset_transfer_head a
INNER JOIN (
SELECT ast_id,
MAX(trn_move_dt) trn_move_dt,
trn_id
FROM asset_transfer_detail
GROUP BY ast_id
) b ON a.trn_id = b.trn_id
AND b.trn_move_dt = b.trn_move_dt
AND a.trn_status = '1' // พอเป็น Status 0,2,3,4 กลายเป็นไม่แสดง Remark ก่อนหน้านั้นด้วย
) AS p ON t1.asset_id = p.ast_id
WHERE t1.status_gotoadmin = 0
ORDER BY t1.asset_id DESC
LIMIT $start, $per_page
SELECT
a.trn_status,
a.trn_remark,
a.trn_id,
aa.ast_id,
CASE WHEN (a.trn_status = 1) THEN a.trn_remark ELSE a.trn_remark END AS Remark
FROM
asset_transfer_head a
LEFT JOIN (
SELECT
b.ast_id,c.trn_status,
MAX(c.trn_move_dt) trn_move_dt
FROM
asset_transfer_head c
INNER JOIN (
SELECT
ast_id,trn_id
FROM
asset_transfer_detail
GROUP BY ast_id,trn_id
) b ON c.trn_id = b.trn_id) as aa ON aa.trn_id = a.trn_id
WHERE
aa.ast_id = '18810'