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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top