Вопрос:
Мне нужно получить заголовок из таблицы 2, таблица 2 имеет столбец заголовка и идентификатора. В таблице 1 приведены некоторые данные, и три из этих столбцов объединяются вместе с идентификатором, который можно найти в таблице 1.
Я использовал функцию 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, Quality и t1aid, но столбцы help и group_name второй таблицы возвращают null.
Лучший ответ:
Я чувствую, что вы не можете использовать псевдоним в предложении 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).
И “Conditional_expr, используемый с ON, – это любое условное выражение формы, которое может использоваться в предложении WHERE” (из dev.mysql.com/doc/refman/5.1/en/join.html).
Итак, как логический вывод, вам не разрешено использовать псевдонимы в предложениях ON.
Ответ №1
попробуйте использовать подзапрос.. это похоже на это………
ех.
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;