2017-07-10 9 views
0

- 私はMS Accessで作業しているため、SQLは制限されています。複数の値のSQL select count()

私のテーブルには、2つの関連フィールドがあります。 F1には会社名があり、F2には8つのテキスト値のうちの1つがあり、ここでは1-8と呼ばれます。

企業名が与えられているので、特定のテキスト値の数がいくつあるか調べる必要があります。

たとえば、「company1」という名前を指定すると、F1に「company1」という50個のレコードが存在する可能性があります。 F2では、50個のレコードに対してテキスト値1,3、および4のみが存在することがあります。クエリ(または複数のクエリ)に

、Iは

1に必要)F1 = 'Company1の'

2)F2 F1 =「Company1のすべての個別の値を検索すべてのレコードを取得します。 'たとえば、この条件の場合、F2 = 2,3,4または7のいずれか

3)F2の各重複値が何回繰り返されたかを検索します。 Cont。上記の例では、2つの10個、10個の3個、10個の4個、および27個の7個があり得る。

プロセスは次のようになります - 'Company1の'

ユーザ入力クエリが

Value | Count 
2  | 10 
3  | 10 
4  | 10 
7  | 20 

を返す私の一般的な考え方は、第2のサブクエリは、そのリスト内のすべての個別の値を生成するために、F1 = Company1のすべてのF2値のリストを生成するためにサブクエリを持つクエリを持っていることでした。次に、何とかして、第2のクエリの各値が繰り返される回数について、第1のサブクエリを検索する必要があります。

ここにいくつかのテストコードがあります。私の問題は、サブクエリの各結果でメインクエリを実行するのではなく、そのサブクエリに値があるかどうかをチェックするため、(等号...)の[重要度]のカウントを返します。

SELECT count(*) 
FROM (
    SELECT [Significance Level:] 
    FROM all_data_tester WHERE 
    [Manufacturer Audited:] = 'Airbus Space & Defense') 
WHERE [Significance Level:] in (
    SELECT distinct [Significance Level:] 
    FROM all_data_tester 
    WHERE [Manufacturer Audited:] = 'Airbus Space & Defense' 
); 

申し訳ありませんご迷惑をおかけして申し訳ございません。私は何

+3

あなたの質問を編集し、サンプルデータと希望する結果を提供してください。あなたのデータベースソフトウェアは限られているかもしれませんが、質問は必ずしも必要ではありません。 –

+0

簡単な 'COUNT(*)'と 'GROUP BY F2'のようなものです – dnoeth

答えて

1

これは対応するカウントとの有意水準ごとに1行が作成されます

BY句
SELECT [Significance Level:], Count(*) As Cnt 
FROM all_data_tester 
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense' 
GROUP BY [Significance Level:] 
ORDER BY [Significance Level:] 

をGROUPを使用して明確にすることができます。

また

SELECT [Manufacturer Audited:], [Significance Level:], Count(*) As Cnt 
FROM all_data_tester 
GROUP BY [Manufacturer Audited:], [Significance Level:] 
ORDER BY [Manufacturer Audited:], [Significance Level:] 

これは、対応するカウントとメーカーとの有意水準ごとに1行が作成されますと、メーカーごとに、このカウントを取得することができます。

+0

ありがとう、これはうまくいきます! –