SQL se une a las dos tablas con una cadena de concatidad como el argumento
-
13-12-2019 - |
Pregunta
Necesito obtener un título de la Tabla 2, la Tabla 2 tiene título y columna de identificación. La Tabla 1 tiene algunos datos y tres de estas columnas concatenadas, componen la identificación que se puede encontrar en la Tabla 1.
Función de Concat_WS () y dio a esta columna un nombre de alias y necesitamos usar el alias para el argumento en (al menos esto es lo que entendí que necesitaba hacer)
Pensé que esto podría ser un simple ajo a la izquierda, pero aún no funciona para mí.
Esta es mi consulta
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;
Obtuve resultados para correo, F_NAME, L_NAME, Calidad y T1AINE, pero las columnas de ayuda y grupo_name de la segunda tabla devuelven null.
Solución
Siento que no puede usar un alias en la cláusula ON. Intenta hacer
LEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group);
"Puede usar el alias en grupo por, ordenar o tener cláusulas para referirse a la columna" (desde dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html).
y "el CondicionAl_expr que se usa con ON es cualquier expresión condicional del formulario que se puede usar en una cláusula WHERE" (de dev.mysql.com/doc/refman/5.1/en/join.html).
para una inferencia lógica que no está permitido usar alias en cláusulas.
Otros consejos
Intenta usar una subconsulta .. va así .........
ex.
seleccione tbl1.mail, tbl1.f_name, tbl1.l_name, tbl1.qualidad, 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;