3

2 つのテーブル トランスファーと機器があり、機器ごとに複数のトランスファーが発生する可能性があります。これらの 2 つのテーブルを で結合project idし、特定のプロジェクトの各機器の最新の転送を返したいと考えています。

transfers table:
tid, pid, eid, date

equipment table:
eid, ename

私の関数では、変数を送信して$pid、転送テーブルに機器 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 の最新の "Transfer" & "Equipment" 行のみを返すには、次を実行します。

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 に答える