Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Error de sintaxis mysql

Estas en el tema de Error de sintaxis mysql en el foro de Bases de Datos General en Foros del Web. ¿¿¿¿¿alguien me puede decir que esta pasando en la sgte consulta??, en Access funciona estupendamente y en mysql me da error de sintaxis. SELECT productos.Descripcion, ...
  #1 (permalink)  
Antiguo 18/09/2003, 11:14
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 22 años, 6 meses
Puntos: 0
Error de sintaxis mysql

¿¿¿¿¿alguien me puede decir que esta pasando en la sgte consulta??, en Access funciona estupendamente y en mysql me da error de sintaxis.

SELECT productos.Descripcion, productos.cantidad_exped, productos.precio, productos.nombre_imagen
FROM (((productos INNER JOIN (ambitos INNER JOIN
ambitos_productos ON ambitos.id_ambito = ambitos_productos.id_ambito)
ON productos.cod_producto = ambitos_productos.cod_producto)
INNER JOIN sub1_ambitos ON ambitos.id_ambito = sub1_ambitos.id_ambito)
INNER JOIN sub2_ambitos ON sub1_ambitos.id_sub1_ambito = sub2_ambitos.id_sub1_ambito)
INNER JOIN sub3_ambitos ON sub2_ambitos.id_sub2_ambito = sub3_ambitos.id_sub2_ambito
WHERE (((ambitos_productos.id_ambito)=$id_ambito) AND
((sub1_ambitos.id_sub1_ambito)=$id_sub1_ambito)AND ((sub2_ambitos.id_sub2_ambito)=$id_sub2_ambito)
AND ((sub3_ambitos.id_sub3_ambito)=$id_sub3_ambito))

Sé q es un poco complicada, pero muchas gracias.
  #2 (permalink)  
Antiguo 19/09/2003, 05:20
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 21 años, 3 meses
Puntos: 2
La resuesta es sencilla: la sintaxis de acces no es estándar con lo que no funciona directamente con el resto de gestores.
Para que funciones con mysql, tiene que ser así:
Código PHP:
SELECT productos.Descripcionproductos.cantidad_expedproductos.precioproductos.nombre_imagen
FROM productos
ambitos,ambitos_productos,sub1_ambitos,sub2_ambitos,sub3_ambitos
WHERE ambitos_productos
.id_ambito=$id_ambito 
AND sub1_ambitos.id_sub1_ambito=$id_sub1_ambito
AND sub2_ambitos.id_sub2_ambito=$id_sub2_ambito 
AND sub3_ambitos.id_sub3_ambito=$id_sub3_ambito
AND ambitos.id_ambito ambitos_productos.id_ambito
AND ambitos.id_ambito sub1_ambitos.id_ambito
AND productos.cod_producto ambitos_productos.cod_producto
AND sub1_ambitos.id_sub1_ambito sub2_ambitos.id_sub1_ambito
AND sub2_ambitos.id_sub2_ambito sub3_ambitos.id_sub2_ambito 
Espero que te sirva.
Un saludo.
  #3 (permalink)  
Antiguo 19/09/2003, 05:20
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 21 años, 3 meses
Puntos: 2
borrado - duplicado

Última edición por Vice; 19/09/2003 a las 05:33
  #4 (permalink)  
Antiguo 19/09/2003, 20:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En mysql puedes usar INERT JOIN perfectamente (incluso desde la versión de Mysql que tienes ..)

Pero, revisa bien el error de sintax que te esté dando .. pues .. por ejemplo se vé por ahí un )AND .. eso puede ser considerado como error de sintax pues .. seria ) AND (espacio entre el ) y el and) ..

(si quieres un gestor de Msyql con "asistente" tipo Access .. prueba a usar Mysql Studio o Mysql Manager .. verás que puedes usar sus asistentes para generar ese tipo de consultas (con INERT JOIN .. etc) de forma "visual" como en Access y con sintax SQL para Mysql ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 23/09/2003, 01:59
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 22 años, 6 meses
Puntos: 0
Muchas gracias chicos, al final buscando documentación por ahí hice la consulta de la siguiente manera:

SELECT productos.descripcion, productos.cantidad_exped, productos.precio, productos.cod_producto
FROM productos INNER JOIN ambitos_productos USING (cod_producto)
INNER JOIN ambitos USING (id_ambito)INNER JOIN sub1_ambitos USING (id_ambito)
INNER JOIN sub2_ambitos USING (id_sub1_ambito)INNER JOIN sub3_ambitos USING (id_sub2_ambito)
WHERE (((sub3_ambitos.id_sub3_ambito)=$id_sub3_ambito) AND ((sub2_ambitos.id_sub2_ambito)=$id_sub2_ambito)
AND ((sub1_ambitos.id_sub1_ambito)=$id_sub1_ambito) AND ((ambitos_productos.id_ambito)=$id_ambito))";

y me ha funcionado, llegué a la conclusión que el USING debe ser la clave ajena que se usa para unir las tablas no??, lo mismo que hacía antes con el inner join e igualando las claves propias y ajenas.

De todas formas me voy a bajar el mysql studio a ver q tal, pq ahora estoy utilizando el mysql front y no me permite generar consultas, y la verdad es que es una vidilla que la herramienta las genere.

Chao!!! y muchas gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:30.