2011-11-10 4 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; 
によってグループ化する列のそれぞれを含める必要があると思います

複数の列でグループ化する場合は、両方の場所でグループを追加する必要があります。例:

+0

最初の例は無用な結合を持ち、 'SELECT o.dishId、MAX(o.timestamp)FROM orders o GROUP BY o.dishId'と書くことができます。 – Neil

関連する問題