La consulta Sql no funciona en Mysql versión 5.5.16
Frecuentes
Visto 332 veces
2
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?
2 Respuestas
2
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
1
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 mysql or haz tu propia pregunta.
No estoy seguro, pero
FROM (ab_order O)
me parece una sintaxis extraña. ¿Puedes probar a quitar los corchetes? - nettlesin paréntesis sigue sin funcionar... - vetrnicek
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. kitti
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 ... - vetrnicek