Saber si existe registros en otra tabla

15/04/2005 - 17:51 por Franklin Marcano | Informe spam
Saludos
Tengo una tabla con los siguientes registros:
1)Tabla
Codigo Nombre
01 Zulia
02 Valencia
03 Caracas
04 Venado
05 Angostura
99 Otros
2) Tabla

Codigo Fecha
01 01/01/05
01 01/01/05
02 01/02/05
03 01/02/05
04 01/03/05

Quisier obtener lo siguiente
del codigo 01 hubieron 2 el dia 01/01/05
del codigo 02 hubieron 1 el dia 01/02/05
del codigo 03 hubieron 1 el dia 01/02/05
del codigo 04 hubieron 1 el dia 01/03/05
del codigo 05 mostrarme que no hubo movimiento
del codigo 99 mostrarme que no hubo movimiento

Quisiera saber si algunos de los codigos anteriores obtuvieron movimiento en
otra tabla en una determinada fecha, para escojer cuantos obtuvieron y
cuantos no obtuvieron movimientos. Por supuesto las dos tablas estan
relacionadas por el CodigoID

Preguntas similare

Leer las respuestas

#1 Don Roque
15/04/2005 - 18:03 | Informe spam
podes hacer algo asi:

Select codigo, nombre, ( select count(*) from tabla2 t2 where t1.id t2.id ) as cantidad
from tabla1 t1

suerte!
Respuesta Responder a este mensaje
#2 Alejandro Mesa
15/04/2005 - 18:33 | Informe spam
Franklin,

Une las tablas usando un "left join" para poder ver tambien las que no
tienen movimientos, agrupalas por el (t1(codigo, nombre) y t2(fecha)),
cuenta las filas que macharon, filtra las filas por el rango de fechas que
deseas. Para ver las que tienen cero, usa la palabra clave ALL en la clausula
GROUP BY.

Ejemplo:

use northwind
go

create table t1 (
Codigo char(2) not null primary key,
Nombre varchar(25) not null
)
go

create table t2 (
Codigo char(2) not null references t1(Codigo),
Fecha datetime not null
)
go

insert into t1 values('01', 'Zulia')
insert into t1 values('02', 'Valencia')
insert into t1 values('03', 'Caracas')
insert into t1 values('04', 'Venado')
insert into t1 values('05', 'Angostura')
insert into t1 values('99', 'Otros')

insert into t2 values('01', '20050101')
insert into t2 values('01', '20050101')
insert into t2 values('02', '20050201')
insert into t2 values('03', '20050201')
insert into t2 values('04', '20050301')
go

declare @sd datetime
declare @ed datetime

set @sd = '20050101'
set @ed = '20050228'

select
a.Codigo,
a.Nombre,
case when b.Fecha >= @sd and b.Fecha < dateadd(day, 1, @ed) then b.Fecha
else null end as Fecha,
count(b.Codigo)
from
t1 as a
left join
t2 as b
on a.Codigo = b.Codigo
where
b.Fecha >= @sd and b.Fecha < dateadd(day, 1, @ed)
group by all
a.Codigo,
a.Nombre,
b.Fecha
order by
a.Codigo
go

drop table t2, t1
go


AMB

"Franklin Marcano" wrote:

Saludos
Tengo una tabla con los siguientes registros:
1)Tabla
Codigo Nombre
01 Zulia
02 Valencia
03 Caracas
04 Venado
05 Angostura
99 Otros
2) Tabla

Codigo Fecha
01 01/01/05
01 01/01/05
02 01/02/05
03 01/02/05
04 01/03/05

Quisier obtener lo siguiente
del codigo 01 hubieron 2 el dia 01/01/05
del codigo 02 hubieron 1 el dia 01/02/05
del codigo 03 hubieron 1 el dia 01/02/05
del codigo 04 hubieron 1 el dia 01/03/05
del codigo 05 mostrarme que no hubo movimiento
del codigo 99 mostrarme que no hubo movimiento

Quisiera saber si algunos de los codigos anteriores obtuvieron movimiento en
otra tabla en una determinada fecha, para escojer cuantos obtuvieron y
cuantos no obtuvieron movimientos. Por supuesto las dos tablas estan
relacionadas por el CodigoID



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida