MySQL - Sintaxis MySQL

   
Vista:

Sintaxis MySQL

Publicado por edgar (6 intervenciones) el 19/05/2009 16:27:57
Hola por que esto en MS SQL Server 200
funciona a la perfeccion

select d.codsolicitud,d.codlibro,d.fecha,e.nombrelibro,d.numerolibro,d.fojas,c.cliente,c.doi from clientes as c inner join alsolicitudal as b left join allibrosaperturados as d left join alnombreslibros as e on d.codnombrelibro = e.codnombrelibro on b.codsolicitud = d.codsolicitud on c.codcliente = b.codrs where d.codnombrelibro = e.codnombrelibro order by d.codlibro desc

y en MySQL me da error.

Ayudame con esto porfavor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sintaxis MySQL

Publicado por Gonzalo GC (339 intervenciones) el 19/05/2009 17:16:45
Información incompleta: No nos estás diciendo qué error te dice. Eso nos guia para encontrar la solución.
En segundo lugar, MS SQL SERVER No usa ANSI SQL, le pone sintaxis propia que no respeta el estándar. Oracle y DB2 también lo hace, pero Microsoft es un fanático de alterar los estándar.

En lo que se puede ver de tu sentencia podría ser que los ON x = x, de los INNER JOIN están colocados al final. y en todo caso MySQL se lleva mejor con el estándar: Se pone cada uno después de cada JOIN correspondiente.

Fuera de eso, no se ve nada.

Postea el mensaje de eror...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sintaxis MySQL

Publicado por edgar_daniel (6 intervenciones) el 19/05/2009 17:50:38
Si mira, el mensaje de error es el siguiente:

#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 'on c.codcliente = b.codrs where d.codnombrelibro = e.codnombrelibro order by d.c' at line 1

al intentar lo siguiente

SELECT d.codsolicitud, d.codlibro, d.fecha, e.nombrelibro, d.numerolibro, d.fojas, c.cliente, c.doi
FROM clientes AS c
INNER JOIN alsolicitudal AS b
LEFT JOIN allibrosaperturados AS d
LEFT JOIN alnombreslibros AS e ON d.codnombrelibro = e.codnombrelibro ON b.codsolicitud = d.codsolicitud ON c.codcliente = b.codrs
WHERE d.codnombrelibro = e.codnombrelibro
ORDER BY d.codlibro DESC
LIMIT 0 , 30

Pero Al intentar lo siguiente:

SELECT d.codsolicitud, d.codlibro, d.fecha, e.nombrelibro, d.numerolibro, d.fojas
FROM allibrosaperturados AS d
LEFT JOIN alnombreslibros AS e ON d.codnombrelibro = e.codnombrelibro
WHERE d.codnombrelibro = e.codnombrelibro
ORDER BY d.codlibro DESC
LIMIT 0 , 30

Se ejecuta todo correctamente.

En que estoy fallando en la primera consulta. HELP ME.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sintaxis MySQL

Publicado por Gonzalo GC (339 intervenciones) el 19/05/2009 19:43:27
Prueba así:

SELECT
d.codsolicitud,
d.codlibro,
d.fecha,
e.nombrelibro,
d.numerolibro,
d.fojas,
c.cliente,
c.doi
FROM clientes AS c INNER JOIN alsolicitudal AS b
LEFT JOIN allibrosaperturados AS d
LEFT JOIN alnombreslibros AS e
ON d.codnombrelibro = e.codnombrelibro AND
ON b.codsolicitud = d.codsolicitud AND
ON c.codcliente = b.codrs
ORDER BY d.codlibro DESC
LIMIT 0, 30

Además, el WHERE que pusiste es redundante, porqu eya está definido en el JOIN...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sintaxis MySQL

Publicado por edgar (6 intervenciones) el 19/05/2009 22:20:53
Al ejecutar la sugerencia propuesta:

#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 'ON b.codsolicitud = d.codsolicitud AND ON c.codcliente = b.codrs ORDER BY d.co' at line 14

Ayudame please.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sintaxis MySQL

Publicado por Gonzalo GC (339 intervenciones) el 20/05/2009 00:04:06
Está mal escrita en general la sentencia, como ya lo comenté dos posts atrás:
MySQL se ajusta más al estándar ANSI SQL-99, por lo que para que funciones los INNER JOIN deben estár seguidos de su ON X=X correspondiente. Esto sería:
SELECT T1.a, T2.b, T3.c
FROM tabla1 T1 INNER JOIN tabla2 T2 ON T1.a = T2.a LEFT JOIN tabla3 T3 ON T2.b = T3.b LEFTO JOIN tabla4 T4 ON T3.c = T4.c
LIMIT 0, 30;

¿Se entiende ahora? NO PUEDES PONER TODOS LOS ON x = x AL FINAL. Deben estar en el orden correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sintaxis MySQL

Publicado por pablo (1 intervención) el 14/06/2009 17:57:48
Hola!
me gustaria saber si pudierais resolverme este analisis sintactico.

" No busques tan nervioso el dinero en el bolsillo, Pedro; yo le pagaré el billete a tu amigo José, asi que estate tranquilo".

muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar