2017-06-29 4 views
0

私は初心者の技術者で、私のホスティングサービスでMySQLに新しく変換された.MDB(MS-Access)データベースを持つColdFusion Webサイトを用意しています。何年も前から完全に動作していたクエリは、MySQLへの変換後も機能しなくなり、「すべての派生テーブルには別のエイリアスが必要です」というエラーメッセージがスローされます。MySQLデータベースで動作しない.MDBデータベースで動作するSQLクエリ

ヘルプとして、ここではクエリが何をしているのですか?今までは完全に完全に完了しました。会員データベースがあります。各メンバーには最大4つの電子メールアドレスがあり、各レコードのDBには4つの列があり、各電子メールアドレスは電子メールサービスプロバイダドメイン(Comcast.net、gmail.com、aol.comなど)に関連付けられています。私はクエリ結果を使用して、各(Comcast.net 12、gmail.com 26、aol.com 13など)に関連付けられたメンバーの電子メールアドレスの総数を個別にすべての電子メールドメインを一覧表示します。

MySQLでこのクエリを最小限にするだけで、MySQLと連携するにはどうすればいいですか?ご協力いただきありがとうございます!

<cfquery name="cfqGetEmailServiceProviderDomains" datasource="membership_database"> 
SELECT email_service_provider, COUNT(email_service_provider) AS Instances 
FROM 
(
    SELECT MID(email_address1, INSTR(email_address1, '@') + 1) AS email_service_provider 
    FROM tblMembers 
    WHERE email_address1_active = 1 
    AND email_address1 IS NOT NULL 
    UNION ALL 
    SELECT MID(email_address2, INSTR(email_address2, '@') + 1) AS email_service_provider 
    FROM tblMembers 
    WHERE email_address2_active = 1 
    AND email_address2 IS NOT NULL 
    UNION ALL 
    SELECT MID(email_address3, INSTR(email_address3, '@') + 1) AS email_service_provider 
    FROM tblMembers 
    WHERE email_address3_active = 1 
    AND email_address3 IS NOT NULL 
    UNION ALL 
    SELECT MID(email_address4, INSTR(email_address4, '@') + 1) AS email_service_provider 
    FROM tblMembers 
    WHERE email_address4_active = 1 
    AND email_address4 IS NOT NULL 
) 
GROUP BY email_service_provider 
ORDER BY email_service_provider ASC 
</cfquery> 

答えて

0

は、テーブルの上に

SELECT ... 
FROM (
... 
) table_alias 
GROUP BY ... 
ORDER BY ... 
+0

をエイリアスを配置しようとすると「テーブルエイリアスは、」実際のテーブルを参照するか、クエリが動作しますので、一時的に作成しただけで「仮想テーブル」であるのか? – rjd

+0

「a」のような単なるランダムな名前です。 SQL Serverのようなdbmsには、テーブルエイリアスが必要です。 – Eric

関連する問題