通过max(date)连接已知变量排序的2个表

时间:2012-11-03 15:08:51

标签: mysql join

我有2个桌子转移和设备,每个设备可能有多个转移。我希望将这两个表与 project id 连接起来,并为特定项目的每件设备返回最新的转移。

transfers table:
tid, pid, eid, date

equipment table:
eid, ename

在我的函数中,我正在发送变量$pid,以便为转移表中存储了设备ID的特定项目ID的设备转移进行整理。

2 个答案:

答案 0 :(得分:1)

你想要groupwise maximum

SELECT *
FROM   transfers NATURAL JOIN (
  SELECT   pid, eid, MAX(date) date
  FROM     transfers
  WHERE    pid = ?
  GROUP BY eid
) t JOIN equipment USING (eid)

答案 1 :(得分:1)

我认为你的要求可能对我来说有点不清楚,但只返回最新的“转移”和特定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 = ? )

请告诉我这是否符合您的希望。如果没有,请给我一些关于每个表中行的信息。

希望这有帮助,

...约翰