2016-03-26 10 views
0

Boris Davidovich(SalesmanId "6")が販売する製品の数を調べる必要があります。しかし、私はクエリではなく、IDで名前を使用する必要があり、私はGROUP BYを使用したいと思います。SQLでGroup By関数を使用する

は、これまでのところ、これは私が書いたものです:私はここから行くところからこだわっている

SELECT Salesmen.FirstName, Salesmen.LastName, COUNT(ProductsSales.QuantitySold) 
FROM ProductsSales LEFT JOIN Salesmen 
ON Salesmen.FirstName = Boris AND Salesmen.LastName = Davidovich 

ここでは、私が使用しなければならないデータがあります。

enter image description here

答えて

1

salesmanidで、あなたはそれらのフィールドに合わせてjoinを変更する必要があります。あなたがたがsumの代わりcountと、それに応じてgroup byを使用することができます:あなたはどの販売せずに販売員を返すようにしたい場合を除き

SELECT s.SellerId, s.FirstName, s.LastName, SUM(ps.QuantitySold) 
FROM Salesmen S JOIN 
    ProductsSales PS ON S.sellerid = PS.salesmanid 
WHERE S.FirstName = 'Boris' AND S.LastName = 'Davidovich' 
GROUP BY s.SellerId, s.FirstName, s.LastName 

をまた、outer joinのための必要はありません。その場合は、inner joinleft joinに変更し、​​3210を使用してnullの代わりに0を取得します。

+0

@sgeddesを修正してください。売り手IDはSalesmanidです。本当にありがとう! – Brad

1

下図のようにあなたのSQL Selectステートメントを変更することができます。selleridを想定し

SELECT First(Salesmen.FirstName) As FN, Fist(Salesmen.LastName) As LN, SUM (ProductsSales.QuantitySold) As TotalProd 
    FROM Salesmen INNER JOIN ProductsSales ON Salesmen.SalesmanId = ProductsSales.SellerId 
    WHERE (Salesmen.FirstName= 'Boris' AND Salesmen.LastName = 'Davidovich') 
GROUP BY Salesmen.SalesmanID 
+0

'group by 'を除いた集約は動作しません(これが' mysql'でない限りランダムな結果しか返されません)。また、OPは、レコードを「合計」して「カウント」したいと思うようです。これがうまくいくかどうかは分かりません... – sgeddes

+0

そうです、それはSUM()でなければなりません。それはまた、GROUP BYなしでMS Accessで動作します。よろしく、 –

+0

ありがとう@AlexBell – Brad