引数としてCONCAT文字列を使用している2つのテーブルにSQL左結合
-
13-12-2019 - |
質問
表2からタイトルを取得する必要がある、表2にはタイトルとID列があります。 表1は、表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;
.
メール、f_name、l_name、alies、t1aidの結果を取得しますが、2番目のテーブルのaid_name列がnullを返します。
解決
ON句にエイリアスを使用できないように感じます。
をやってみてくださいLEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group);
.
"グループのエイリアス、order by、または列を参照するか、または句を参照することができます(dev.mysql.com/doc/refman/5.0/en/en/jps-with-alias.htmlから)。
および "ONで使用される条件AXPRは、where句で使用できる形式の条件式表現です(dev.mysql.com/doc/refman/5.1/join/join.htmlから)。
では論理的な推論として、句にエイリアスを使用することはできません。
他のヒント
副問合せを使用してみてください。 それはこのようになります.........
ex.
選択 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;
. 所属していません StackOverflow