SQL левый присоединение к двум таблицам, используя строку CONCAT как аргумент
-
13-12-2019 - |
Вопрос
Мне нужно получить название из таблицы 2, таблица 2 имеет столбец заголовка и идентификатора. В таблице 1 есть некоторые данные и три из этих столбцов, объединенные вместе, макияж ID, который можно найти в таблице 1.
Я использовал функцию concat_ws () и дал этот столбец имя псевдонима и нужно использовать псевдоним для аргумента на аргумент (по крайней мере, это то, что я понял, что мне нужно сделать)
Я думал, что это может быть простым левым присоединением, но это не работает для меня.
Это мой запрос
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, качества и t1aid, но в столбцах помощи и групповой версии второй таблицы возвращают NULL.
Решение
Я чувствую, что вы не можете использовать псевдоним в пункте в ON. Попробуйте сделать
LEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group);
.
"Вы можете использовать псевдоним в группе по заказам, или имея положения для ссылки на столбец» (от dev.mysql.com/doc/refman/5.0/ru/problems-with-alias.html).
и "Условный_Экспр, используемый с включенным, представляет собой любую условное выражение формы, которая может быть использована в положении, где можно использовать в одобренном положении« (от dev.mysql.com/doc/refman/5.1/en/goin.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;
.