La consulta Sql no funciona en Mysql versión 5.5.16

Estoy intentando ejecutar la siguiente consulta:

$query = "SELECT O. * AS NUM FROM (ab_order O)
    LEFT JOIN ab_user U ON (O.id_user=U.id)
    WHERE O.id IN ( SELECT OT.id_ab_order FROM ab_order_transaction OT
        LEFT JOIN ab_transaction T ON (OT.id_ab_transaction = T.id)
    LEFT JOIN ab_user U ON (T.id_user = U.id) 
    WHERE T.validated = 1 {$condTrans} ) {$condOrder}
    ORDER BY {$orderCol} LIMIT $from, $numRecords ";
$queryDB = $DB->queryExec($query);

En el servidor en vivo:

  • funciona con MySql versión 3.3.10.
  • PHP versión 5.2.17.

Pero necesito usar localhost:

  • XAMPP para Linux, versión 1.7.7
  • PHP 5.3.8
  • MySql versión 5.5.16.

En localhost dice:

MySQL error: 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS NUM
FROM (ab_order O)
LEFT JOIN ab_u' at line 1.

¿Hay alguna forma más fácil de actualizar la base de datos Mysql del servidor en vivo?

preguntado el 22 de mayo de 12 a las 19:05

No estoy seguro, pero FROM (ab_order O) me parece una sintaxis extraña. ¿Puedes probar a quitar los corchetes? -

sin paréntesis sigue sin funcionar... -

En general, debe intentar configurar su entorno de desarrollo lo más cerca posible del entorno en vivo. Es mucho más difícil probar y depurar cuando se desarrolla con MySQL 5 y se implementa en MySQL 3, algo así como guardar un documento como MS Word 2008 y luego intentar abrirlo en Word 2000.

Sí, lo sé, pero no quiero cambiar la configuración de localhost, porque todo lo demás me funciona sin errores, solo esta consulta es problemática ... -

2 Respuestas

El alias de todas las columnas parece incorrecto: SELECT O. * AS NUM. No estoy seguro de por qué funcionaría en versiones anteriores, pero el as num debe eliminarse o cada columna debe tener un alias explícito.

contestado el 22 de mayo de 12 a las 19:05

Puede definir el alias para una columna individual en SELECCIONAR. aquí está el problema

SELECT O. * AS NUM

En lugar de este uso

SELECT O. * 

Este es un artículo útil. Uso de alias de columna en la instrucción SELECT

contestado el 22 de mayo de 12 a las 19:05

Sí, gracias, si uso esto, funciona: SELECT O. * FROM (ab_order O) LEFT JOIN ab_user U ON (O.id_user=U.id) WHERE O.id IN ( SELECT OT.id_ab_order FROM ab_order_transaction OT LEFT JOIN ab_transaction T ON (OT.id_ab_transaction = T.id) LEFT JOIN ab_user U ON (T.id_user = U.id) WHERE T.validated = 1 {$condTrans} ) {$condOrder} ORDER BY {$orderCol} LIMIT $from, $numRecords "; - vetrnicek

de nada. si esto es útil, puede aceptar cualquier respuesta: moyed ansari

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.