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

join a la misma tabla dos veces

Estas en el tema de join a la misma tabla dos veces en el foro de Mysql en Foros del Web. Esta sentencia funciona perfectamente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM $file INNER JOIN $file2 ON   'ESTADOCIVIL' = $file2.id1_parametro AND $file.U_estado_civil = ...
  #1 (permalink)  
Antiguo 22/06/2014, 13:16
 
Fecha de Ingreso: abril-2013
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Pregunta join a la misma tabla dos veces

Esta sentencia funciona perfectamente:
Código MySQL:
Ver original
  1. SELECT * FROM $file
  2. INNER JOIN $file2 ON  'ESTADOCIVIL' = $file2.id1_parametro AND $file.U_estado_civil = $file2.id2_parametro
  3. LEFT JOIN $file3 ON $file.U_coordinador_usuario = $file3.id_colaborador
  4. ORDER BY $order
pero cuando quiero hacer otra selección a la misma tabla $file2 no me funciona:
Código MySQL:
Ver original
  1. SELECT * FROM $file
  2. INNER JOIN $file2 ON  'ESTADOCIVIL' = $file2.id1_parametro AND $file.U_estado_civil = $file2.id2_parametro
  3. LEFT JOIN $file2 ON  'SITUACIONFAMILIAR' = $file2.id1_parametro AND $file.U_situacion_familiar = $file2.id2_parametro LEFT JOIN $file3 ON $file.U_coordinador_usuario = $file3.id_colaborador
  4. ORDER BY $order

No tengo claro cómo resolver el acceder más de una vez a la misma tabla de parámetros.

Gracias.

Última edición por gnzsoloyo; 22/06/2014 a las 17:21
  #2 (permalink)  
Antiguo 22/06/2014, 17:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: join a la misma tabla dos veces

En primer ligar, tienes errores conceptuales en algunos detalles: Estás poniendo validaciones de WHERE en el FROM, y po rmás que alguien haya que lo aconseje, en MySQL es una muy mala idea.
"ESTADOCIVIL", "SITUACIONFAMILIAR", no son nombres de columnas en ese contexto, son cadenas de texto, por lo que asumo que son condiciones que deberían estar en el WHERE. Si son columnas, entonces tienes un serio error de sintaxis.
Por otro lado, la respuesta a tu proguna es relativamente simple: Cuando invocas dos o más veces la misma tabla, obligatoriamente debes usar alias para las mismas. Ya no es opcional. Es mandatorio.
En este tipo de consultas es muy complicado parametrizar los nombres de tabla en forma dinámica por programación, y francamente hasta lo veo innecesario, ya que la relación se vuelve demasiado estricta (solo cierta combinación podría cumplirse, y muy probablemente sea siempre con las mismas tablas).
Yo que tu, analizaría cuidadosamente si realmente necesitas indicar los nombres de las tablas con variables.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/06/2014, 03:08
 
Fecha de Ingreso: abril-2013
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Pregunta Respuesta: join a la misma tabla dos veces

Gracias por contestar. Quizás no está bien explicado el planteamiento.
Las constantes son porque hay una tabla de parámetros. La tabla tiene dos campos de clave, una con la constante, ejemplo PROVINCIAS, y el segundo campo con el código de provincia, por ejemplo 08 (Barcelona). En la tabla cliente, se almacena 08 para un cliente de Barcelona. Lo que quiero es construir una consulta que en la fila ya tenga las variables convertidas, por ejemplo en el caso de la tabla clientes, está el código postal, el código de localidad, el tipo de cliente, etc., y lo que deseo es traer en el select además de todos los campos de la tabla clientes, el valor de cada uno de los parámetros, y todos esos parámetros está en una sola tabla de parámetros.
He visto lo de utilizar el alias, pero tengo un cierto lío en cuanto a su utilización, ya que me dice tabla duplicada.
¿Seríais tan amables de ponerme un ejemplo o dirigirme a donde pudiese investigar?
Gracias1
  #4 (permalink)  
Antiguo 23/06/2014, 03:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: join a la misma tabla dos veces

Tienes que poner un alias diferente para cada una de las llamadas, esa es la idea.
Si la invocado dos veces, son dos alias diferentes entre sí.
Respecto al otro tema, la pregunta es si esta consulta la vas a usar en otro caso, con otras tablas.
Si no es así, no tiene sentido usar variables en los nombres de las tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, select, tabla, veces
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:08.