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

Update de un inner join con condición

Estas en el tema de Update de un inner join con condición en el foro de SQL Server en Foros del Web. Buenos días estimados, me pueden ayudar por favor, no se como manejar el campo fecha como condición de un where entre dos tablas. Donde campo ...
  #1 (permalink)  
Antiguo 30/10/2012, 08:23
 
Fecha de Ingreso: octubre-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Update de un inner join con condición

Buenos días estimados, me pueden ayudar por favor, no se como manejar el campo fecha como condición de un where entre dos tablas. Donde campo fecha debo agregarlo en la sub consulta, para después utilizarlos en el where. El problema que si agrego fecha en la sub consulta no esta sumando por campo cod, se pierde la sumatoria de minutos por cod.

lo que quiero hacer es obtener los minutos de cada cod según la fecha de la tabla Despachados y segun esa fecha obtener los minutos de la otra tabla Trafico

update h
set h.trafico = t.minutos
from Despachados h
inner join
(select distinct cod,fecha,round(sum(dur_call)/60,0) as minutos from dbo.Trafico group by cod,fecha) t
on h.cod= t.cod
where t.fecha >= right(right(h.fecha_desp_o,4),2)+''+left(right(h.fecha_desp_o,7),2)+''+left(h.fecha_desp_o,2)
and h.despachados= 0

Saludos.
  #2 (permalink)  
Antiguo 30/10/2012, 09:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 2 meses
Puntos: 774
Respuesta: Update de un inner join con condición

y si haces algo asi:

update tabla1
set valor=t1.valor
from
(
select tabla1 inner join tabla 2.....
) as t1 where t1.id=tabla1.id

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/10/2012, 10:37
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 3 meses
Puntos: 40
Respuesta: Update de un inner join con condición

set trafico = t.minutos
en lugar de
set h.trafico = t.minutos
El "h" es redundante porque el sistema sabe del operador Update que se trata de la tabla h.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 04/11/2012, 17:02
 
Fecha de Ingreso: octubre-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Respuesta: Update de un inner join con condición

Gracias por su ayuda, pero mi problema se enfoca mas a como obtener o utilizar las fechas de ambas tablas para poder realizar la acción del were.

ya que si agrego la fecha en la subconsulta estoy restringiendo el el total del operador SUM por cada COD, pero si no agrego el campo fecha en la subconsulta, despues en el where no puedo utilizarla como parametro ya que no estará en el select de la subconsulta. Espero haberme explicado.

La query segun su ayuda la deje asi:

update Despachos
set trafico=t1.minutos
from
(
select d.cod,t.fecha,round(sum(t.dur_call)/60,0) as minutos
from Despachos d inner join Trafico t on d.cod= t.cod
group by d.cod,t.cod
) as t1
where Despachos.cod= t1.cod
and t1.fecha >= right(right(fecha_desp_o,4),2)+''+left(right(fecha _desp_o,7),2)+''+left(fecha_desp_o,2)
and despachados= 0
  #5 (permalink)  
Antiguo 04/11/2012, 21:29
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 3 meses
Puntos: 40
Respuesta: Update de un inner join con condición

¿Esta consulta te funciona?
De lo que yo se- ell sistema no puede actualizar consultas con Group By.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 05/11/2012, 09:44
 
Fecha de Ingreso: octubre-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Respuesta: Update de un inner join con condición

Hola GeriReshef,

si funciona pero no entrega lo que necesito. No se como hacerlo

Finalmente no me entrega el total de minutos para cada COD según la fecha, ya que al agregar la fecha en el select de la subconsulta y utilizar el operador SUM, estos valores de minutos quedan separados segun lo correspondiente a cada fecha. Pero si no agrego la fecha en la subconsulta despues no puedo utilizarlo en el Where general como condición.

El tema es que dependiendo de la fecha de la tabla 1 (Despachos) sirva como condición para realizar sumatoria de minutos para cada Cod de la tabla 2 (Trafico) donde existe tráfico de minutos por día.

Entonces si la fecha de tabla 1 para un Cod X es el 01-11-2012 entonces debería actualizar el campo trafico de tabla 1 con la sumatoría de trafico de la tabla 2 desde el 01-11-2012 en adelante.

sañudos,

Etiquetas: condición, join, select, tabla, update, campos
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:58.