2016-05-17 3 views
2

私はWinFormsアプリケーションのChartコントロールを使って作業していましたが、正しい点をプロットするのにはいくつかの問題がありました。DataManipulator.InsertEmptyPointsを含む多くのものを無駄に試しました。SQL - 左結合のNullがありません

私はSQLクエリを改善することを決めましたが、これはまだ完了していますが、0/NULL値は含まれていませんが、左結合に問題があります。

問合せ:

SELECT FC_Name , count (Findings.Findings_ID) AS 'NumFindings' 
FROM FindingCategories 
    LEFT JOIN Findingsubcategories ON Findingsubcategories.FC_ID = FindingCategories.FC_ID 
    LEFT JOIN Findings ON Findings.FSC_ID = Findingsubcategories.FSC_ID 
    -- LEFT JOIN Audit ON Audit.Audit_ID = Findings.AU_ID 
    -- WHERE Audit.Audit_ID = 932 
    GROUP BY FC_Name 

Query with no Comment

今クエリの出力、私は私のコメントを削除し、クエリ

enter image description here

で2行を含めます

どこがいいか次のようなもの:

FC_Name | NumFindings 
Category   1 
Category   6 
Category   1 
Category   0/Null 
Category   0/Null 
Category   0/Null 
Category   0/Null 

私は間違っていますか?

+1

あなたはLEFT Audit.Audit_ID = Findings.AU_ID AND Audit.Audit_ID = 932の監査のJOIN '試すことができます'代わりに別のWHERE? – Rob

+0

私の結果は変わっていませんでした:/ – Krono

+0

@Krono、この質問に対する答えとしてあなたのソリューションを投稿してください。そしてそれを受け入れる。 –

答えて

3

私は私の加入の一つが冗長だったと何かをdidntのことを推測するために管理し、解決策:

SELECT FC_Name, COUNT(Findings.Findings_ID) AS 'NumFindings' 
FROM FindingCategories 
LEFT OUTER JOIN Findingsubcategories ON Findingsubcategories.FC_ID = FindingCategories.FC_ID 
LEFT OUTER JOIN Findings ON Findings.FSC_ID = Findingsubcategories.FSC_ID AND Findings.AU_ID = 932 
GROUP BY FC_Name 
+0

結果を変更するLEFT JOINからLEFT OUTER JOINに変更して解決しました。これらの他の結合を元に戻して外部結合に変更することもできますが、それでも機能します。違いを生み出すのは「OUTER」だ。 – Corey

+0

@Corey、間違っています。 **ちょうど**結合タイプではありませんでしたが、私のwhereステートメントも同様です。 現在、このクエリを今年のデータと連携させようとしています。 – Krono

+0

@Corey問題はWHEREのために起こりました。これは結合後に結果をフィルタリングしました。しかし、結合に制約を置くと、フィルタリングが「Findings」で行われなければならないという事実が明らかになったので、Auditへの左結合は何もせず、完全に削除することができました – Rob

関連する問題