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

union avanzada de dos tablas

Estas en el tema de union avanzada de dos tablas en el foro de Mysql en Foros del Web. Hola que tal, le estado dando vueltas al asunto y no logro resolver un detalle con unas tablas, lo que quiero es unir las dos ...
  #1 (permalink)  
Antiguo 11/03/2009, 13:41
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
De acuerdo union avanzada de dos tablas

Hola que tal, le estado dando vueltas al asunto y no logro resolver un detalle con unas tablas, lo que quiero es unir las dos tablas, pero no lo he podido hacer, les explico.

Tengo dos tablas

tabla 1 (temporal)
id_cal | fp_progr (fecha en unixtime)
94 | 1238475600
94 | 1237870800
94 | 1237266000
94 | 1236661200
94 | 1236060000


tabla 2
id_cal | id_mat | fp_real | fp_progr
94 | 119 | 0 | 1236574800
94 | 119 | 0 | 1237179600
94 | 119 | 0 | 1238389200
94 | 119 | 0 | 1233986400

en la tabla 2 existen más registros, solo que escribi solo 4 por que son los registros que coinciden con id_cal = 94, ok lo que quiero hacer es que al momento de unir las dos tablas, me muestre algo como esto:

resultado
id_cal | id_mat | fp_real | fp_progr
94 | 119 | 0 | 1238475600
94 | 119 | 0 | 1237870800
94 | 119 | 0 | 1237266000
94 | 119 | 0 | 1236661200
94 | 119 | 0 | 1236060000

Es decir, que el valor de tabla1.fp_progr se muestre en tabla2.fp_progr, pero como en la primer tabla hay 5 registros y en la tabla 2 solo 4, entonces que al final sean 5 registros los que se tengan que mostrar, así como lo muestra en la tabla resultado.

He tratado de usar LEFT JOIN y me arroja 20 registros 4 veces cada fila de la tabla 1, también con UNION, pero al ser diferentes columnas me manda error. Estoy usando la siguiente consulta

Código PHP:
SELECT map.id_calmap.id_mat,
map.fp_realctmp.fp_progr
FROM tabla1 ctmp LEFT JOIN tabla2 map
ON ctmp
.id_cal map.id_cal
WHERE map
.id_mat '119' 
Alguno puede echarme una mano, les agradezco su atención.

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #2 (permalink)  
Antiguo 11/03/2009, 13:50
Avatar de pacmanaman  
Fecha de Ingreso: marzo-2009
Mensajes: 84
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: union avanzada de dos tablas

Esto te deberia funcionar ...
Código:
select 
	t1.*, -- PONE LOS CAMPOS QUE DESEES A MOSTRAR DE TABLA1
 	t2.*  -- PONE LOS CAMPOS QUE DESEES A MOSTRAR DE TABLA2
from 
	tabla t1
	join tabla2 t2 on t2.id_cal = t1.id_cal -- UNIS TABLA1 CON TABLA2
where
	t2.idmat = '119' and t1.idmat = '119' -- FILTRAMOS POR LOS ID
  #3 (permalink)  
Antiguo 11/03/2009, 14:06
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: union avanzada de dos tablas

Gracias por responder pacmanaman, pero hay un detalle, en la tabla 1 no tengo un campo idmat, solo tengo id_cal y f_pago_progr.

apliqué el ejemplo que me diste pero, igual, muestra 20 filas repitiendo 4 veces cada fila de la tabla 1

gracias nuevamente, seguiré intentando

alguien más se apunta???

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #4 (permalink)  
Antiguo 11/03/2009, 15:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: union avanzada de dos tablas

A ver si esto:
SELECT t1.id_cal, t2.id_mat, t2.fp_real, t1.fp_progr
FROM tabla1 t1
LEFT JOIN tabla2 t2 ON t1.id_cal = t2.id_cal
GROUP BY t1.fp_progr
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 19:31.