sql >> Base de Datos >  >> RDS >> Mysql

Mezclar ANSI 1992 JOIN y COMMA en una consulta

Según este enlace , no debe mezclar ambas notaciones al crear uniones. La coma que está utilizando para unirse a memebers as m, telephone as t , y las llamadas posteriores a inner join , están provocando el error de columna desconocida.

Para solucionarlo, utilice CROSS/INNER/LEFT JOIN en lugar de comas.

Anteriormente, el operador de coma (,) y JOIN tenían la misma precedencia, por lo que la expresión de unión t1, t2 JOIN t3 se interpretaba como ((t1, t2) JOIN t3). Ahora JOIN tiene mayor precedencia, por lo que la expresión se interpreta como (t1, (t2 JOIN t3)). Este cambio afecta a las sentencias que usan una cláusula ON, porque esa cláusula solo puede referirse a columnas en los operandos de la unión, y el cambio en la precedencia cambia la interpretación de cuáles son esos operandos.

Con fines pedagógicos, estoy agregando la consulta como creo que debería ser:

SELECT m.*, t.*
FROM memebers as m 
    JOIN telephone as t
    JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
    JOIN mitgliedTelephone as mt ON m.id = mt.memeber

Ya que no te unirás a t y m , el resultado final será un producto cartesiano; es posible que desee que se revise.

Espero haberte ayudado.