我有 2 个表转移和设备,其中每件设备可能有多个转移。我希望将这 2 个表与 a 连接起来,project id
并返回特定项目的每件设备的最新传输。
transfers table:
tid, pid, eid, date
equipment table:
eid, ename
在我的函数中,我发送变量$pid
以仅对特定项目 ID 的设备转移进行排序,该项目 ID 与转移表中的设备 ID 一起存储。
你想要分组最大值:
SELECT *
FROM transfers NATURAL JOIN (
SELECT pid, eid, MAX(date) date
FROM transfers
WHERE pid = ?
GROUP BY eid
) t JOIN equipment USING (eid)
我认为您的要求对我来说可能仍然有点不清楚,但要仅返回特定 PID 的最新“传输”和“设备”行,请执行以下操作:
SELECT t.tid, t.pid, t.eid, e.ename, t.date
FROM transfers t
JOIN equipment e ON t.eid = e.eid
WHERE t.pid = ?
AND t.date = (SELECT MAX(t2.date) FROM transfers t2 WHERE t2.pid = ? )
让我知道这是否符合您的期望。如果没有,请给我更多关于每个表中的行的信息。
希望这可以帮助,
约翰...