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

Condicion dentro del inner join

Estas en el tema de Condicion dentro del inner join en el foro de Mysql en Foros del Web. Hola, Tengo 3 tablas, A, B y C, donde B y C se relacionan con A : Tabla A ida nombre Tabla B idb ida ...
  #1 (permalink)  
Antiguo 07/10/2012, 10:58
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Condicion dentro del inner join

Hola,

Tengo 3 tablas, A, B y C, donde B y C se relacionan con A :


Tabla A
ida
nombre

Tabla B
idb
ida
fecha

Tabla C
idc
ida
fecha

Donde un mismo id de la tabla a (ida) puede aparecer muchas veces en una misma tabla con diferentes fechas

La cosa es que quiero que, cuando relacione las 3 tablas, obtener solamente el registro con mayor fecha

Algo como:

Código MySQL:
Ver original
  1. select a.nombre, b.fecha, c.fecha
  2. inner join tablac as c on c.ida = a.ida
  3. inner join tablab as b on b.ida = a.ida

Si yo ejecuto eso, obtendré todos los registros que cada ida tiene en tabla c y b, pero yo solo quiero 1 por tabla, el más reciente.
  #2 (permalink)  
Antiguo 07/10/2012, 15:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Condicion dentro del inner join

No he probado nada, pero tal vez con esto...
Código MySQL:
Ver original
  1. SELECT t1.nombre, t1.fecha, t1.id FROM
  2.   ( (SELECT a.nombre, c.fecha, c.id
  3.     INNER JOIN tablac as c on a.ida = c.ida ORDER BY  c.fecha DESC)
  4.   (SELECT a.nombre, b.fecha, b.id
  5.     INNER JOIN tablab as b on a.ida = b.ida ORDER BY b.fecha DESC)) t1 GROUP BY t1.id
  #3 (permalink)  
Antiguo 07/10/2012, 15:52
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Condicion dentro del inner join

no hay otra forma de hacerlo sin concatenar selects?
  #4 (permalink)  
Antiguo 08/10/2012, 13:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Condicion dentro del inner join

Puedes concatenar menos, así. Haz tus comprobaciones para ver si obtienes lo que deseas
Código MySQL:
Ver original
  1. SELECT t1.nombre, t1.orden
  2. SELECT nombre, IFNULL( b.fecha, c.fecha ) orden, a.ida
  3. LEFT JOIN b ON a.ida = b.ida
  4. LEFT JOIN c ON a.ida = c.ida
  5. )t1

Etiquetas: join, registros, 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 23:09.