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

Error en consulta JOIN

Estas en el tema de Error en consulta JOIN en el foro de Mysql en Foros del Web. Hola a todos, tengo una duda y no se muy bien como solucionarla o si hay otra forma mejor de hacerlo. Si yo se un ...
  #1 (permalink)  
Antiguo 06/09/2011, 16:18
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 11 años, 4 meses
Puntos: 0
Error en consulta JOIN

Hola a todos, tengo una duda y no se muy bien como solucionarla o si hay otra forma mejor de hacerlo. Si yo se un campo de una tabla que hace referencia a otra tabla. Por ejemplo el usuario con el id 1 es de una ciudad con el id 23, y esa información esta en una tabla con la siguiente estructura
id ----- idusuario ----- idciudad
3 1 23

Como puedo juntar tres tablas en una? la tabla "union" (la del ejemplo donde esta el" idusuario" y el "idciudad", la tabla "usuarios" (para saber la información del usuarios) y la tabla "ciudades" (para saber la ciudad que corresponde el idciudad 23)

He estado leyendo sobre JOIN (y tampoco se si es la forma mas correcta de hacerlo) pero lo maximo que he conseguido es juntar dos tablas y me da error

SELECT a.*, b.* FROM union a JOIN ciudades b ON b.id = a.idciudad
  #2 (permalink)  
Antiguo 06/09/2011, 16:43
Avatar de timoteo666  
Fecha de Ingreso: agosto-2011
Ubicación: /home/Gdl
Mensajes: 242
Antigüedad: 8 años, 6 meses
Puntos: 11
Respuesta: Error en consulta JOIN

En efecto para unir la tablas tiene que ser con un join, pero hay varios join´s, en tu caso creo que lo mas conveniente es el inner join, seria algo como esto:

SELECT
a.campo1,
a.campoN,
b.campo1,
b.campoN,
c.campo1,
c.campoN
FROM tbl_1 a
INNER JOIN tbl_2 b ON a.campo1 = b.campo1
INNER JOIN tbl_3 c ON c.campo2 = b.campo2

te recomiendo seleccionar solo los campos necesarios y no (SELECT a.*, b.* ) a menos que sea necesario, espero te sirva... a no olvides dejar karma xD
__________________
( + ) lineas de código ( - ) televisión
  #3 (permalink)  
Antiguo 06/09/2011, 17:54
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error en consulta JOIN

Gracias por responder. De momento solo quiero unir las 3 tablas, luego ya mostrare los datos que quiero.
He hecho esto
Código SQL:
Ver original
  1. SELECT a.*, b.*, c.*, FROM UNION a INNER JOIN ciudades b ON a.idciudad = b.id INNER JOIN usuarios c ON c.id = a.idusuarios

pero me da el diguiente 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 'FROM union a INNER JOIN ciudades b ON a.idciudad = b.id INNER JOIN usuarios c ON c' at line 1
  #4 (permalink)  
Antiguo 06/09/2011, 18:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 3 meses
Puntos: 2654
Respuesta: Error en consulta JOIN

Partamos de la base que "union" es una palabra reservada por ser cláusula de un SELECT.
No uses palabras reservadas en los nombres de campos, tablas, bases u otro objeto de base de datos. Generan estos errores de sintaxis indetectables.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 06/09/2011, 18:10
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error en consulta JOIN

Vamos que los fallos que últimamente estoy teniendo con la base de datos, es básicamente porque la tabla se llama "union"? No lo hubiera imaginado, y mira que me he hartado de poner comillas dobles y haciendo mil tonterías para solucionarlo.
  #6 (permalink)  
Antiguo 06/09/2011, 18:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 3 meses
Puntos: 2654
Respuesta: Error en consulta JOIN

Las comillas (") no solucionan el problema porque se usan para contener texto fundamentalmente. Para encerrar nombres de objetos de base de datos se usan acentos inversos (`), no comillas o apóstrofos (').
Por otra parte, todos los lenguajes, incluido el SQL, que es un lenguaje de consultas, tienen palabras reservadas. La regla principal de todo lenguaje es que no se pueden usar como nombres a los comandos, sentencias o nombres de funciones.
Nunca.

Por eso no puedes usan UNION o SELECT como nombre de tabla.

La lista es bastante larga, y la puedes encontrar en el manual (Tratamiento de palabras reservadas).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 06/09/2011, 18:23
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error en consulta JOIN

He cambiado el nombre de la tabla "union" a "enlace" y me sigue dando error.
Este es el SELECT
Código MySQL:
Ver original
  1. SELECT a.*, b.*, c.*, FROM enlace a INNER JOIN ciudades b ON a.idciudad = b.id INNER JOIN usuarios c ON c.id = a.idusuarios
y el error el siguiente:
Cita:
#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 'FROM enlace a INNER JOIN series b ON a.idseries = b.id INNER JOIN usuarios c ON ' at line 1
  #8 (permalink)  
Antiguo 06/09/2011, 18:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 3 meses
Puntos: 2654
Respuesta: Error en consulta JOIN

A veces, cuando transcribes las sentencias de una forma estructurada, las cosas se revelan:
Código MySQL:
Ver original
  1. SELECT a.*, b.*, c.*,
  2.     enlace a
  3.     INNER JOIN ciudades b ON a.idciudad = b.id
  4.     INNER JOIN usuarios c ON c.id = a.idusuarios

¿Puedes ver esa coma después de "c.*"...? Bueno, pues ese es el segundo error.

Código MySQL:
Ver original
  1. SELECT a.*, b.*, c.*
  2.     enlace a
  3.     INNER JOIN ciudades b ON a.idciudad = b.id
  4.     INNER JOIN usuarios c ON c.id = a.idusuarios
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 06/09/2011, 18:37
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error en consulta JOIN

Muchísimas gracias, enserio. Una de las mejoras respuestas que he recibido en este foro, me ha gustado tu trato y tu forma de explicar las cosas, muchas gracias. La verdad es que llevaba días dándole vueltas a esto. Un saludo

Etiquetas: join, select, tabla
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 00:06.