SQL левый присоединение к двум таблицам, используя строку CONCAT как аргумент

StackOverflow https://stackoverflow.com//questions/9682509

  •  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;
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top