ほとんど無関係な 3 つのテーブルをクエリしようとしています。3 つすべての関係は 1 つの列 (電子メール アドレス フィールド) です。「ユニオンオール」を作成し、3つのテーブルすべてから電子メールを取得し、最後にグループ化して重複がないことを確認しました(ユニオンも試しました)。
私の問題は、すべて正常に動作することですが、最初のテーブルで各電子メール アドレスが 1、0、または NULL であるかどうかを知る必要があります。列を取得してから、「"" AS Col1」を他のテーブルに追加しようとしました (エラー 1222 を回避し、列を一致させます)。私はこれを行うことができますが、テーブル 1 のデータはテーブル 2 の「何も」によって上書きされ、テーブル 3 のデータは再び何もないことによって上書きされます。
クエリは次のとおりです。
SELECT * FROM (
SELECT email AS emails, COUNT(email) AS qty, '' AS custCountry, '' AS custID, '' AS cName, active AS newsletter
FROM newsletter
WHERE email != ''
GROUP BY email
UNION ALL
SELECT email AS emails, COUNT(email) AS qty, '' AS custCountry, '' AS custID, '' AS cName, '' AS newsletter
FROM orders
WHERE email != ''
GROUP BY email
UNION ALL
SELECT email AS emails, COUNT(email) AS qty, country AS custCountry, customerID AS custID, countries.name AS cName, '' AS newsletter
FROM customers
LEFT JOIN countries ON customers.country = countries.zoneID
WHERE email != ''
GROUP BY email
) AS newtable
GROUP BY emails
ORDER BY qty DESC
「アクティブ」列を追加するまで機能します。その時点で、アクティブ列にあったものは何も上書きされません。保持する必要がある位置データを取得するため、そこに 3 番目のテーブルが必要です。最初のテーブルを最後に配置すると、「アクティブ」になりますが、場所の列は上書きされます。
私はMySQLのプロではありません(見てください!)ので、どんな助けでも大歓迎です。