2012-11-03 44 views
3

我有2個表傳輸和設備,其中可能有多個傳輸每件設備。我期待加入這兩個表格,並將project id加入到這個表格中,併爲特定項目返回每件設備的最新轉移。加入2表與已知變量排序最大(日期)

transfers table: 
tid, pid, eid, date 

equipment table: 
eid, ename 

在我的功能我送變量$pid理清只是存儲在轉賬表中的設備ID的特定項目ID的設備傳輸。

回答

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 = ?) 

讓我知道,如果這樣做,你希望它會做。如果沒有,請給我一些關於每個表中的行的更多信息。

希望這有助於

約翰。

+0

不完美,但它足以讓它變得有效,讓它起作用。這裏是我的最終代碼'SELECT t.tid,t.pid,t.eid,e.name,e.make,e.eqid,e.model,t.date FROM transfers t JOIN equipment e ON t.eid = e.eid WHERE t.pid = $ pid AND t.date =(SELECT MAX(t2.date)FROM傳輸t2 WHERE t2.eid = e.eid)' – hatchet145

+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) 
+0

謝謝你的答案。我之前有過類似的查詢,但它仍然返回每個項目的所有設備傳輸。例如,我調用T40卡車投影NHS3,然後在3天后計劃PLB。查詢輸出兩個項目的T40卡車。我最初可能並不清楚它只需要輸出當前的設備。 – hatchet145