2017-11-06 9 views
0

することにより、参加回数&グループ:MySQLのクエリ:インナーは、私は、各フォームIDのエントリの数を取得するには、次のクエリを持って

SELECT DISTINCT 
     formId, 
     COUNT(entryID) 
FROM approvalDetails 
GROUP BY formId; 

私はフォームIDに関連付けられているUSEREMAILを引っ張って、このクエリを拡張したいと思います

私は以下を試しましたが、カウント値が正しく表示されませんでした。

SELECT approvalDetails.formId, 
     COUNT(approvalDetails.entryID), 
     preferences.userEmail 
FROM approvalDetails 
    INNER JOIN preferences ON approvalDetails.formId = preferences.formId 
GROUP BY approvalDetails.formId, 
     preferences.userEmail; 

サンプルデータ

表1 - approvalDetails

formId entryId 
-   - 
1   1 
1   2 
1   3 
2   4 
3   5 

表2 - プは、出力が

を必要

formId userEmail 
-   - 
1   email1 
2   email2 
3   email3 
3   email4 
3   email4 

(電子メールアドレスは、フォームIDに固有ではありません)

formId Count (entryID) userEmail 
    -   -    - 
    1   3    email1 
    2   1    email2 
    3   1    email3 
    3   1    email4 
+0

親切に私は私が探しています何のサンプルが含まれているサンプルデータと、ご希望の結果 – zarruq

+0

@zarruqを共有しています。ありがとうございました。 – Johnny

答えて

1
SELECT ap.formId, 
     ap.entryID, 
     preferences.userEmail 
FROM 
(
    SELECT formId, 
      COUNT(entryID) entryID 
    FROM approvalDetails 
    GROUP BY formId 
) ap 
INNER JOIN preferences ON ap.formId = preferences.formId 
GROUP BY ap.formId, 
     preferences.userEmail; 
+0

ありがとうございます!私はこれが働いたと信じています。 GROUP BYにpreferences.userEmailを少し追加しました。ちょうどいくつかのテストを今実行しています。 – Johnny

+0

チャームのように働いた。再度、感謝します。 – Johnny

+0

@Robert G – NOPPADOL

0

内部結合は実際には等しくなるようになります。等価結合は、結合に参加するすべてのテーブルの一致する行と交差します。 これは、結合に応じて行コモンを持つ仮想テーブルを形成します。 最初のテーブルに10の行があり、別のテーブルに5つの行がある場合。結合条件が4行と一致する場合、結果の仮想表は4行しか持たない。

だから私はあなたのカウント集計の列が一致する行だけを表示すると思います。

要件に応じて適切な左外部結合を使用してください。

0

あなたは、派生テーブルのテーブルpreferencesからdistinctformIdemailIdを選択し、以下のように表approval_Detailsに参加することができます。

SELECT t1.formId, 
     count(EntryId) as EntryIdCount, 
     t2.userEmail 
FROM approvalDetails t1 
JOIN 
    (SELECT DISTINCT formId, 
        userEmail 
    FROM preferences) t2 ON t1.formId = t2.formId 
GROUP BY t1.formId, 
     t2.userEmail 

結果:

formId EntryIdCount userEmail 
--------------------------------- 
1  3    email1 
2  1    email2 
3  1    email3 
3  1    email4 

DEMO

関連する問題