MySQL 5 múltiples sintaxis de unión que no trabaja en MySQL 4
-
21-09-2019 - |
Pregunta
la consulta SQL actual funciona bien localmente en MAMP 1.8.4 ejecutar MySQL 5.1.37.
SELECT
EL.log_actions, EL.log_date, EL.log_value, EL.log_type,
EA.admins_name,
EU.users_name, EU.users_matric
FROM events_log EL
JOIN events_users EU
USING (users_id)
JOIN events_admins EA
USING (admins_id)
ORDER BY EL.log_id DESC
LIMIT 0, 10
Sin embargo, cuando traigo a esta consulta en vivo servidor de producción que se está ejecutando MySQL 4.1.22-estándar, se produjo el siguiente error (si hay o no hay datos en la entrada).
A Database Error Occurred
Error Number: 1054
Unknown column 'sceclub_exclaim2007.EU.admins_id' in 'on clause'
SELECT EL.log_actions, EL.log_date, EL.log_value, EL.log_type,
EA.admins_name, EU.users_name, EU.users_matric
FROM events_log EL
JOIN events_users EU USING (users_id)
JOIN events_admins EA USING (admins_id)
ORDER BY EL.log_id
DESC LIMIT 0, 20
Esto se basa en CodeIgniter 1.7.2 y tanto en la producción y desarrollo se están ejecutando el mismo sistema de base de datos.
tablas de base de datos
events_users: users_id users_name users_credits
users_matric users_redeem
events_admins: admins_id admins_email admins_name
admins_pass admins_date admins_modified admins_last_login
events_attendance: attendance_id users_id events_id
events_events: events_id events_name events_venue events_time
events_desc events_pass
events_log:log_id admins_id log_actions log_date log_value
users_id log_type
Soy nuevo en MySQL así que no estoy al tanto de cualquier diferencia en las versiones o lo que podría ser una causa posible, gracias de antemano!
Probado google para MySQL4 diferencia en vano también. También probamos utilizando
SELECT
EL.log_actions, EL.log_date, EL.log_value, EL.log_type,
EA.admins_name,
EU.users_name, EU.users_matric
FROM events_log EL
JOIN events_users EU
where EL.users_id = EU.users_id
JOIN events_admins EA
USING EL.admins_id = EA.admins_id
ORDER BY EL.log_id DESC
LIMIT 0, 10
Pero entonces me dieron el error en la producción y el desarrollo.
A de error de base de datos Se produjo
Número de error: 1064
Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca de 'JOIN events_admins EA USANDO EL.admins_id = EA.admins_id ORDER BY' en la línea 8
SELECT EL.log_actions, EL.log_date, EL.log_value, EL.log_type, EA.admins_name, EU.users_name, EU.users_matric DESDE EL events_log UNIRSE events_users la UE donde EL.users_id = EU.users_id ÚNETE events_admins EA USO EL.admins_id = EA.admins_id ORDER BY EL.log_id DESC LIMIT 0, 20
Si usted me puede apuntar a algunos recursos donde puedo leer más sobre MySQL 4 sintaxis para lograr el mismo efecto que como lo hice con MySQL 5 de sintaxis, por favor hágamelo saber.
Gracias de nuevo!
Solución
SELECT
EL.log_actions, EL.log_date, EL.log_value, EL.log_type,
EA.admins_name,
EU.users_name, EU.users_matric
FROM events_log AS EL
JOIN events_users AS EU
ON EL.users_id = EU.users_id
JOIN events_admins EA
ON EL.admins_id = EA.admins_id
ORDER BY EL.log_id DESC
LIMIT 0, 10
Otros consejos
La segunda consulta que intentó debe tener la palabra clave ON
, no USING
o where
:
SELECT
EL.log_actions, EL.log_date, EL.log_value, EL.log_type,
EA.admins_name,
EU.users_name, EU.users_matric
FROM events_log EL
JOIN events_users EU
ON EL.users_id = EU.users_id
JOIN events_admins EA
ON EL.admins_id = EA.admins_id
ORDER BY EL.log_id DESC
LIMIT 0, 10
Tener un vistazo a la sintaxis para JOIN si todavía no está seguro si va a utilizar WHERE
, ON
o USING
.