1

表2からタイトルを取得する必要があります。表2にはタイトルとIDの列があります。表1にはいくつかのデータがあり、これらの列の3つが連結されて、表1にあるIDを構成しています。

CONCAT_WS()関数を使用して、この列にエイリアス名を付け、on引数にエイリアスを使用する必要があります(少なくとも、これは私が行う必要があると理解したことです)

これは単純な左結合である可能性があると思いましたが、それでもうまくいきません。

これは私の質問です

SELECT
    table_openers.mail,
    table_openers.f_name,
    table_openers.l_name,
    table_openers.Quality,
    CONCAT_WS('-',
            table_openers.esp,
            table_openers.acc,
            table_openers.group) as 't1aid',
    table_groups.aid,
    table_groups.group_name
FROM
    lance_mailstats.table_openers
        LEFT JOIN
    lance_mailstats.table_groups ON table_groups.aid = t1aid;

mail、f_name、l_name、Quality、およびt1aidの結果が得られますが、2番目のテーブルのaid列とgroup_name列はnullを返します。

4

2 に答える 2

1

ON 句でエイリアスを使用できないように感じます。やってみる

LEFT JOIN
    lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
            table_openers.esp,
            table_openers.acc,
            table_openers.group);

「GROUP BY、ORDER BY、または HAVING 句でエイリアスを使用して、列を参照できます」(dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html から)。

そして、「ON で使用される conditional_expr は、WHERE 句で使用できる形式の条件式です」(dev.mysql.com/doc/refman/5.1/en/join.html から)。

したがって、論理的な推論として、ON 句でエイリアスを使用することは許可されていません。

于 2012-03-13T11:13:47.433 に答える
0

サブクエリを使用してみてください..次のようになります........

元。

SELECT tbl1.mail、tbl1.f_name、tbl1.l_name、tbl1.Quality、tbl1.t1aid、table_groups.aid、table_groups.group_name

    FROM

       (SELECT
              table_openers.mail,
              table_openers.f_name,
              table_openers.l_name,
              table_openers.Quality,
                CONCAT_WS('-',
                   table_openers.esp,
                   table_openers.acc,
                   table_openers.group) as 't1aid',
             FROM
             lance_mailstats.table_openers )tbl1

       LEFT JOIN
       lance_mailstats.table_groups ON table_groups.aid = tbl1.t1aid;
于 2012-03-13T12:01:03.603 に答える