は単純なクエリである:つまりグループによると、内側には参加:「最大」のトリックなしで参加を選択する方法をここで
SELECT orders.id, customers.name, COUNT(order_product.id)
FROM orders
INNER JOIN order_product ON orders.id = order_product.order_id
INNER JOIN customers ON orders.customer_id = customers.id
GROUP BY orders.id;
、私が欲しい:
- ためのID 。
- 各注文の製品数(カウント)。
- 注文の顧客名。
問題はcustomers.name
を選択することです。それは集計関数でもグループ化でもないので、私はそれを直接選択することはできません。しかし、はの1つしかないので、私はなぜそれを集約しなければならないのか分かりません。私はその名前を選択するには、このようなトリックを行うことができます。
SELECT MAX(customers.name)
しかし、私は、「顧客のための名前を「注文に対する顧客の最大の名前を」たいがいないので、それは、汚いと思いますオーダー"。 そのようなことをするエレガントな方法は何ですか?
希望は重複していません。
EDIT:注文番号がorders.customer_id
である注文が1人しかありません。だから私はなぜこのようなやり方をしなければならないのか尋ねるのです。 GROUP BY
句に
に順番をウィンドウ関数を使用することができますか?!? –
はい。私は私の質問を編集する。 –
そして 'GROUP BY orders.id、customers.name'の結果はあなたが望むものではありませんか? – jarlh