![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
02/04/2007, 14:51
|
| | Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 18 años, 7 meses Puntos: 2 | |
Re: Consulta ¿right join? o ¿qué? Seria algo así:
Código:
SET NOCOUNT ON
declare @tabla table(
Dia varchar(2)
,Tarea int
,Objeto int
)
Declare @tablaTarea table(
Tarea int
,Descripcion varchar(10)
)
Declare @tablaObjeto table(Objeto int, Descripcion varchar(10))
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,100)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,200)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',1,300)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',2,200)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D1',2,300)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',1,800)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',1,900)
insert into @tabla (Dia, Tarea, Objeto)
VALUES('D2',3,900)
insert into @tablaTarea (Tarea, Descripcion)
Values(1,'Tarea1')
insert into @tablaTarea (Tarea, Descripcion)
Values(2,'Tarea2')
insert into @tablaTarea (Tarea, Descripcion)
Values(3,'Tarea3')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(100,'Objeto100')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(200,'Objeto200')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(300,'Objeto300')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(400,'Objeto400')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(500,'Objeto500')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(600,'Objeto600')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(700,'Objeto700')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(800,'Objeto800')
INSERT INTO @tablaObjeto(Objeto,Descripcion)
VALUES(900,'Objeto900')
Select DISTINCT A.Dia, A.Tarea, B.Objeto, CASE WHEN C.Objeto IS NULL THEN 'NO' ELSE 'SI' END [HACER?]
from (SELECT DISTINCT A.Dia, B.Tarea FROM @tabla A,@tablaTarea B) A
LEFT OUTER JOIN (SELECT DISTINCT A.Dia, B.Objeto FROM @tabla A, @tablaObjeto B) B ON A.Dia = B.Dia
LEFT OUTER JOIN @tabla C ON C.Dia = A.Dia AND B.Objeto = C.Objeto AND C.Tarea = A.Tarea
INNER JOIN @tabla D ON D.Objeto = B.Objeto
ORDER BY A.Dia, A.Tarea
Select DISTINCT A.Dia, A.Tarea, B.Objeto, CASE WHEN C.Objeto IS NULL THEN 'NO' ELSE 'SI' END [HACER?]
from (SELECT DISTINCT A.Dia, B.Tarea FROM @tabla A,@tablaTarea B) A
LEFT OUTER JOIN (SELECT DISTINCT A.Dia, B.Objeto FROM @tabla A, @tablaObjeto B) B ON A.Dia = B.Dia
LEFT OUTER JOIN @tabla C ON C.Dia = A.Dia AND B.Objeto = C.Objeto AND C.Tarea = A.Tarea
ORDER BY A.Dia, A.Tarea
SET NOCOUNT OFF
Solo que el resultado que dices que debe de salir no se como sería posible obtener tendrias que explicar más de donde sale...
Suerte |