2012-02-22 34 views
0

可能重複:
Retrieving the latest note (by timestamp) in a single query from a 1:n table需要幫助試圖提取最新的音符在SQL查詢中的每個客戶端ID

嗨不知道我應該在這裏做的是從未有過的,使像這樣的查詢。

我需要做的是加入一個名爲表_notes與_leads,

每一個客戶都有一個唯一的裁判和他們在_notes表幾個音符。

我想要做的是產生一個查詢,它將顯示_leads中的所有字段+每個客戶端的最新備註。

我有什麼到目前爲止,

SELECT 
_leads.ID, 
_leads.Title, 
_leads.Firstname, 
_leads.Lastname 
_notes.Note, 
_notes.`Date` 
FROM 
_leads 
Left Join _notes ON _leads.ID = _notes.Lead_ID 
GROUP BY _leads.ID 

這隻能說明我的第一個音符每一個客戶的, 有沒有得到查詢做我想做的一種方式。

+1

加入的全部_notes清潔只是檢查,現在 – 2012-02-22 15:13:18

回答

1

子查詢是我通常解決這種類型的困難

SELECT 
    _leads.ID, 
    _leads.Title, 
    _leads.Firstname, 
    _leads.Lastname, 
    n.Note, 
    n.`Date` 
FROM _leads 
LEFT JOIN (
    SELECT 
     _notes.Lead_ID, 
     _notes.Note, 
     _notes.`Date` 
    FROM _notes 
    ORDER BY `Date` DESC 
) AS n 
ON _leads.ID = n.Lead_ID 
GROUP BY _leads.id 

如果您_notes表也有一個ID字段,則下面的可能是有用的也並會輕微使用子查詢返回與每個線索相關聯的最高ID,然後根據該

SELECT 
    l.ID, 
    l.Title, 
    l.Firstname, 
    l.Lastname, 
    _notes.Note, 
    _notes.`Date` 
FROM (
    SELECT 
     _leads.ID, 
     _leads.Title, 
     _leads.Firstname, 
     _leads.Lastname, 
     MAX(_notes.ID) AS Note_ID 
    FROM _leads 
    LEFT JOIN _notes 
    ON _notes.Lead_ID = _leads.ID 
    GROUP BY _leads.ID 
) AS l 
LEFT JOIN _notes 
ON _notes.ID = l.Note_ID 
0

最近我遇到了這樣的問題。嘗試是這樣的:

SELECT l.ID,l.Title,l.Firstname,l.Lastname,n1.Note,n1.`Date` 
FROM _notes n1 
LEFT JOIN _notes n2 ON (n1.ID = n2.ID AND n2.`Date` > n1.`Date`) 
LEFT JOIN _leads l ON l.ID = n1.Lead_ID 
WHERE n2.Lead_ID IS NULL;