3

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

transfers table:
tid, pid, eid, date

equipment table:
eid, ename

在我的函数中,我发送变量$pid以仅对特定项目 ID 的设备转移进行排序,该项目 ID 与转移表中的设备 ID 一起存储。

4

2 回答 2

1

你想要分组最大值

SELECT *
FROM   transfers NATURAL JOIN (
  SELECT   pid, eid, MAX(date) date
  FROM     transfers
  WHERE    pid = ?
  GROUP BY eid
) t JOIN equipment USING (eid)
于 2012-11-03T15:14:14.783 回答
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 = ? )

让我知道这是否符合您的期望。如果没有,请给我更多关于每个表中的行的信息。

希望这可以帮助,

约翰...

于 2012-11-03T16:26:48.420 回答