2009-09-04 97 views
1

我現在有類似的查詢:單結果,用左連接的查詢

SELECT users.fname, users.lname, sales.date 
FROM users 
LEFT JOIN sales ON users.id=sales.user 

這讓我有類似的結果:

Fname | Lname | Date 

Jeff | K  | 2/12/08 
Jeff | K  | 5/18/08 
Jeff | K  | 2/22/09 
Bill | D  | 3/12/08 
Bill | D  | 12/9/08 

這是我非常期待因爲我有多個銷售鏈接到一個用戶,但我想只有一個用戶列出(,也許是一種方式來選擇哪個銷售領域,從選擇單一結果)這是可能的,我會怎麼做呢?

即:

Fname | Lname | Date 

Jeff | K  | 5/18/08 
Bill | D  | 12/9/08 

回答

4
SELECT users.fname, users.lname, MAX(sales.date) 
FROM users 
LEFT JOIN sales ON users.id=sales.user 
GROUP BY users.fname, users.lname 

,或者如果你想從銷售表字段:

SELECT users.fname, users.lname, sales.date, sales.proft 
FROM users 
LEFT JOIN sales ON users.id=sales.user 
AND sales.date = (SELECT MAX(sales.date) FROM sales WHERE user = users.id) 
+0

啊,我忘了良好的醇」組的命令。謝謝! – kilrizzy 2009-09-04 13:47:05

+0

第一個查詢會給出一個錯誤:users.fname,users.lname不在aggergate函數或組中 – 2009-09-04 13:47:51

+0

應該是「GROUP BY users.fname,users.lname」而不是「GROUP BY sales.date」 – jnylen 2009-09-04 17:24:52

0
SELECT users.fname, users.lname, max(sales.date) as date 
FROM users 
LEFT JOIN sales ON users.id=sales.user 
group by users.fname, users.lname 
0

你必須組用戶,並添加一些聚合函數在銷售日期「控制」在查詢結果集中輸出哪個可能日期...

說你想要的最近日期...

Select u.fname, u.lname, Max(s.date) LastSale 
FROM users u 
    LEFT JOIN sales s ON u.id=s.user 
Group By u.fname, u.lname