2011-11-10 38 views
1

我有一家餐館。所以我有一個「菜單」表和一個「訂單」表。我想找到最近訂購的一盤菜。所以我知道我必須在某個時候使用dishId組,但是我嘗試的所有內容都會返回錯誤。以下查詢有效,但會返回重複項。我只想要每道菜的最新實例。請注意,我的「訂單」表包含我不是在目前感興趣的客戶信息。使用內連接和組通過

select o.timestamp, m.* 
from orders o 
inner join menu m 
on (o.dishId = m.dishId); 

回答

0

我認爲有在這裏你的問題是你需要

select m.dishId, MAX(o.timestamp) 
    from orders o 
    inner join menu m 
    on (o.dishId = m.dishId) 
group by m.dishId; 
包括每個要組列

如果你想分組更多的列,你必須在兩個地方添加它們。例如:

select m.dishId, m.dishName, MAX(o.timestamp) 
    from orders o 
    inner join menu m 
    on (o.dishId = m.dishId) 
group by m.dishId, m.dishName; 
+0

第一個例子具有無用加入和可以寫'SELECT o.dishId,MAX(o.timestamp)FROM級O GROUP BY o.dishId' – Neil