2017-11-01 12 views
0

サーバーとクライアントにインストールされている各ソフトウェアの数を取得しようとしています。最初のクエリを実行すると、4000行以上が返されます。私は、各クライアント名を表示するカウントを取得し、することはできませんので、私はこのクエリを実行すると、それはSQLインストールされたプログラムの数が正しく返されない

SELECT COUNT(*), a.DisplayName0,c.Name0 FROM v_GS_ADD_REMOVE_PROGRAMS a, v_R_System c 
WHERE A.DisplayName0 NOT LIKE 'hotfix for%' 
AND A.DisplayName0 LIKE 'CCC Help Norwegian%' 
GROUP BY c.Name0, A.DisplayName0 
ORDER BY c.Name0 

4000以上の任意のアイデアであるべきとき

SELECT a.DisplayName0,c.Name0 FROM v_GS_ADD_REMOVE_PROGRAMS a, v_R_System c 
WHERE A.DisplayName0 NOT LIKE 'hotfix for%' 
AND A.DisplayName0 LIKE 'CCC Help Norwegian%' 
GROUP BY c.Name0, A.DisplayName0 
ORDER BY c.Name0 

は、それだけで25の数を持っているもの間違っているかもしれない? TIA

+0

私はJOINを正しく書き出すことから始めます。それは確かにあなたの問題を解決します。 –

+4

[古いスタイルのJOINを使用した嫌な癖 - Aaron Bertrand](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style -joins.aspx) – SqlZim

+0

テーブルの実際の詳細を提供する必要があります。ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

答えて

2

あなたは2つのテーブルをクロス結合しているようです。おそらく、INNER JOINを使用する必要があります。両方のテーブルに共通の列が何か分かりませんが、あなたのソリューションは次のようになります。

SELECT COUNT(*), a.DisplayName0,c.Name0 
FROM v_GS_ADD_REMOVE_PROGRAMS a 
INNER JOIN v_R_System c 
    ON c.<some column> = a.<some column> 
WHERE A.DisplayName0 NOT LIKE 'hotfix for%' 
AND A.DisplayName0 LIKE 'CCC Help Norwegian%' 
GROUP BY c.Name0, A.DisplayName0 
ORDER BY c.Name0 
+0

私はこれを試しましたが、行は返されませんか? SELECT COUNT(*)、a.DisplayName0、c.Name0 v_GS_ADD_REMOVE_PROGRAMS FROM INNERはv_R_System C ON c.Name0 = a.DisplayName0 WHERE A.DisplayName0 NOT LIKE '%の修正プログラム' AND A.DisplayName0 LIKE 'をJOIN CCCは、私は次のことを試してみましたが、それでもSELECT COUNT(*)、a.DisplayName0、c.Name0 v_GS_ADD_REMOVE_PROGRAMS FROM INNER 25行を返すノルウェー%」 GROUP BY c.Name0、c.Name0 – user1342164

+0

BY A.DisplayName0 ORDERヘルプJOIN v_R_System c ON c.ResourceID = a.ResourceID WHERE A.DisplayName0 NOT '%用の修正プログラム' AND A.DisplayName0 LIKE 'CCCヘルプノルウェー語' GROUP BY c.Name0、AD isplayName0 ORDER BY c.Name0 – user1342164

+2

データベース間のID列に何らかの種類の結合を行いたいと思うかもしれません。これは通常数値です。 –

関連する問題