2016-12-09 5 views
0

私は、0人のCOUNT人と、新入社員のための月と月の間の総販売数を返すクエリを作成しようとしています。WHEREを使用すると、 "ゼロ"/"0"をどのように含めるとCOUNTになりますか?

SELECT recruits.pin, recruits.first_name, recruits.surname, sales.sale_date, 
COUNT(sales.pin) AS 'TotalSales' FROM sales 
LEFT JOIN recruits ON sales.pin = recruits.pin 
WHERE sales.sale_date BETWEEN '$sYear1-$sMonth1-01' AND '$sYear2-$sMonth2-31' 
AND recruits.country = '$sCountry' 
GROUP BY recruits.pin 
ORDER BY COUNT(sales.pin) DESC; 

これは、選択した月の合計販売数を出力します。 0の値を表示せず、すべての新兵を表示することはありません。 WHEREステートメントを削除すると、月ごとにフィルタリングされないので、すべての新人が出力されるので、月ごとの売り上げ数を除外できません。

ご協力いただければ幸いです。

+0

日付の間に売上(sales.pin)が表示されていない理由はありません。 – TeaTime

+0

FROMを採用者とLEFT JOINセールスから取得させます。 そして、.. COUNT(COALESCE(sales.PIN、0)) – AntDC

答えて

0

あなたはon句にrecruitsに条件を移動する必要があります。しかし、すべて(国によってフィルタリング)を募集したい場合は、recruitsLEFT JOINの最初のテーブルになります。

SELECT r.pin, r.first_name, r.surname, s.sale_date, 
     COUNT(s.pin) AS TotalSales 
FROM recruits r LEFT JOIN 
    sales s 
    ON s.pin = r.pin AND 
     s.sale_date BETWEEN '$sYear1-$sMonth1-01' AND '$sYear2-$sMonth2-31' 
WHERE r.country = '$sCountry' 
GROUP BY r.pin 
ORDER BY COUNT(s.pin) DESC; 

注:私はこのように書きます

  • 表の別名が読みと書き込みにクエリが容易になります。
  • 通常、集約されていないすべての列をGROUP BYに含めることをお勧めします。おそらく、pinrecruitsの主キー/ユニークキーですので、これは列を含めないのが一番良いケースです。
  • sale_date(2番目の表)の条件はon句に入れる必要があります。
  • country(最初の表)の条件はwhere句に入れる必要があります。
+0

それは治療を働いた:) –

0

私が言うwhere節のためです。あなたはまた、販売と転職を逆転させるべきです。最初にすべての人材を募集し、販売に参加してください。 sales.id(右の列名を選択する)がヌルであるか、または売上が期間内にあるかどうかをテストして、すべての新入社員を含めるようにしてください。

SELECT recruits.pin, recruits.first_name, recruits.surname, sales.sale_date, 
SUM(COALESCE(sales.Total,0)) AS 'TotalSales' FROM recruits 
LEFT OUTER JOIN sales ON sales.pin = recruits.pin 
WHERE sales.pin IS NULL OR sales.sale_date BETWEEN '$sYear1-$sMonth1-01' AND '$sYear2-$sMonth2-31' 
AND recruits.country = '$sCountry' 
GROUP BY recruits.pin 
ORDER BY COUNT(sales.pin) DESC; 
+0

'新兵。" Id "' ???? – RiggsFolly

+0

はい、nullにはできません。私は[ピン] – asfez

+0

に変更しましたが、これはいくつかの変更を加えました。しかしそれはまだ正しくありません。私は売り上げのない人材のために1を数えます。 –

関連する問題