私はSQLの教科書を読んでいます。また、私は CMS 駆動の PHP/SQL Web サイトを持っています。「探索」するときに正しいクエリ結果がどうあるべきかを理解しているので、データベースのコピーをダウンロードしました。
私の Web サイトには「アラート」機能があり、アラートにサインアップすると、新しいコンテンツが追加されるたびに電子メール通知を受け取ることができます。
具体的には、 alertと *alert_sent*の 2 つのテーブルがあります。Alertには個人の電子メール アドレスが含まれ、*alert_sent* には個人に送信された各電子メールの詳細が含まれます。したがって、アラート テーブルに 100 人がサインアップした場合、テーブルには 100 レコードが含まれます。簡単にするために、10 件の新しい記事があった場合、合計 1,000 件の警告メールが送信されました (各受信者に 10 件)。
CMS Web サイトのバックエンドにログインすると、ユーザーが受信したアラート メールの数を確認できます。私はこれを再現してみたいと思っています。
関連するすべてのレコードを取得するために、次のクエリを実行しました。
SELECT alert.alert_recipient,alert_sent.id
FROM alert
INNER JOIN alert_sent
ON alert_sent.alert_id=alert.id;
これで、このクエリをクエリして、最も多くの電子メール アラートを受信した人を表示したいと思います。このようなもの:
SELECT COUNT(DISTINCT, alert_recipient, ID) FROM myqueryabove
GROUP BY alert_recipient
ORDER id DESC
LIMIT 10;
名前を付けてクエリを実行するだけでクエリを保存するMS Accessの経験があります。
私はここでそれを試しました:
SELECT alert.alert_recipient,alert_sent.id
-> FROM alert
-> INNER JOIN alert_sent
-> ON alert_sent.alert_id=alert.id
-> AS query_001;
でもそれが返ってきた
エラー 1064 (42000): SQL 構文にエラーがあります
最も多くの電子メール アラートを受信した 10 個の電子メール アドレス (alert_recipient) のリストを返すようにするには、どのようにクエリを実行すればよいでしょうか?
__UPDATE FOLLOWING FOLLOWING SOME ANSWERS _ _ 最後の文で指定された望ましい結果を生成することに加えて、私の目標は、既存のクエリをクエリする方法を理解することです。すべてを同じクエリに入れようとするのではなく、後でテーブルであるかのようにクエリできる、一口サイズのコード スニペットのアイデアが気に入っています。これは、Access で学習した成果です。SQL へのアプローチが間違っている可能性がありますか? この場合、このアプローチは可能ですか?