下面是一個簡單的查詢:集團通過與內連接:怎麼沒有「最大」絕招選擇加入
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
。我不能直接選擇它,因爲它不在聚合函數中,也不在group by中。但是只有一個,所以我知道爲什麼我必須將它聚合。我可以做這樣的伎倆來選擇它的名字:
SELECT MAX(customers.name)
但我認爲這是骯髒的,因爲我不想要了「訂單客戶的最大名稱」,而是「客戶的名稱訂單」。 做這樣的事情的優雅方式是什麼?
希望它是明確的,而不是重複。
編輯:訂單隻有一個客戶由orders.customer_id
標識。這就是爲什麼我問爲什麼我必須這樣做。
訂單隻有一個客戶?!? –
是的。我編輯我的問題。 –
而'GROUP BY orders.id,customers.name'結果不是你想要的嗎? – jarlh