emails_accounts
次のような構造のテーブルがあります。
╔════╦═════════════════════╦══════════════╗
║ id ║ email ║ description ║
╠════╬═════════════════════╬══════════════╣
║ 1 ║ test@gmail.com ║ Lorem ║
║ 2 ║ example@example.com ║ Ipsum ║
║ 3 ║ test@example.com ║ Dolor ║
║ 4 ║ retail@example.com ║ Sit Amet ║
╚════╩═════════════════════╩══════════════╝
各電子メールは一意です。
email_templates
そして、これに似た構造を持つ2 番目のテーブル:
╔════╦══════════════════╦════════════╦══════════╗
║ id ║ email_title ║ email_from ║ email_to ║
╠════╬══════════════════╬════════════╬══════════╣
║ 1 ║ Test title ║ 1 ║ 3 ║
║ 2 ║ Second title ║ 2 ║ 3 ║
║ 3 ║ Some title ║ 1 ║ 1 ║
╚════╩══════════════════╩════════════╩══════════╝
email_to
とemail_from
異なる場合もありますが、同じ場合もあります (例に示すように)。
私が達成したいのは、テーブルからすべてのアカウントを取得する SQL クエリを作成することですemails_accounts
が、テーブルですべてのアカウントがどのくらい使用されているかという追加情報が含まれていますemail_templates
(チェックする必要がemail_from
ありますemail_to
)。
それほど難しくないことはわかっていますが、これまでのところ、正しい結果を得ることができませんでした。現時点での私のコードは次のとおりです。
SELECT acc.* , COUNT( temp.id )
FROM emails_accounts acc
LEFT JOIN email_templates temp ON acc.id = temp.email_from
GROUP BY acc.email
email_from
しかし、私は両方とemail_to
カウントしたいと思います。
私もこれを試しました:
SELECT acc . * , COUNT( temp.id ) + COUNT( temp2.id ) AS count
FROM emails_accounts acc
LEFT JOIN email_templates temp ON acc.id = temp.email_from
LEFT JOIN email_templates temp2 ON acc.id = temp2.email_to
GROUP BY acc.email
しかし、それはあまりにも多くの結果をもたらします。
編集:正解が含まれたフィドルを作成しました- jaczes のおかげです。