en-USsv-SE
Du är här:   Forum
HemHemSQLug.SESQLug.SETävlingarTävlingarSQLug.se challenge 2011SQLug.se challenge 2011
Föregående
 
Nästa
Nytt inlägg
2011-03-23 17:47
 


-- Lösning 1:

select t1.PeopleID, t1.WantedSetID
from (
select pa.PeopleID, wa.WantedSetID,
ROW_NUMBER() over (partition by pa.PeopleID, wa.WantedSetID order by PeopleAttributeID) as rownbr
from PeopleAttribute pa
join WantedAttribute wa on pa.AttributeID = wa.AttributeID
and pa.AttributeValue = wa.AttributeValue
) t1 join (
select WantedSetID,
ROW_NUMBER() over (partition by WantedSetID order by WantedAttributeID) as rownbr
from WantedAttribute
) t2 on t1.WantedSetID = t2.WantedSetID
group by t1.PeopleID, t1.WantedSetID
having max(t1.rownbr) = max(t2.rownbr)


-- Lösning 2:

select t1.PeopleID, t1.WantedSetID
from (
select pa.PeopleID, wa.WantedSetID, COUNT(*) AS cnt
from PeopleAttribute pa
join WantedAttribute wa on pa.AttributeID = wa.AttributeID
and pa.AttributeValue = wa.AttributeValue
group by pa.PeopleID, wa.WantedSetID
) t1 join (
select WantedSetID, Count(*) as cnt
from WantedAttribute
group by WantedSetID
) t2 on t1.WantedSetID = t2.WantedSetID and t1.cnt = t2.cnt

 
Nytt inlägg
2011-03-23 18:37
 

Lösning 3:

select pa.PeopleID, wa.WantedSetID
from PeopleAttribute pa
join WantedAttribute wa on pa.AttributeID = wa.AttributeID
and pa.AttributeValue = wa.AttributeValue
group by pa.PeopleID, wa.WantedSetID
having COUNT(*) = (
select Count(*)
from WantedAttribute
where WantedSetID = wa.WantedSetID
)
 
Nytt inlägg
2011-03-23 19:30
 
/* Malin Davidsson, Affecto*/
--Här kommer förslag 1:


--setup
create function dbo.fn_GetNbr(@WantedSetID as int)
returns @test table
( nbr int)
as
begin
insert into @test (nbr)
select COUNT(*)
from dbo.WantedAttribute
where WantedSetID=@WantedSetID
return
END
GO

--main
select pa.PeopleID, wa.WantedSetID
from WantedAttribute wa
join PeopleAttribute pa
on wa.AttributeID=pa.AttributeID and wa.AttributeValue=pa.AttributeValue
cross apply fn_GetNbr(wa.WantedSetID) as t
group by pa.PeopleID, wa.WantedSetID, t.nbr
having t.nbr=COUNT(*) 

--clean
drop function fn_GetNbr

 
Nytt inlägg
2011-03-23 20:27
 
/* Malin Davidsson, Affecto*/
--förslag 2:

select pa.PeopleID,wa.WantedSetID
from WantedAttribute wa
join PeopleAttribute pa
on wa.AttributeID=pa.AttributeID and wa.AttributeValue=pa.AttributeValue
right join WantedAttribute wa2
on wa.WantedSetID=wa2.WantedSetID
group by pa.PeopleID,wa.WantedSetID
having count(distinct wa.AttributeID)= count(distinct wa2.AttributeID)

 
Nytt inlägg
2011-03-24 07:58
 
Tack för bidragen Henrik, Zhong och Malin. Vi kommer att testa dem och rapportera hur ni ligger till!

Vi har beslutat att dölja inskickade bidrag. Detta för att förhindra att man kan kopiera från varandras bidrag. Ni postar som vanligt till forumet, men era bidrag blir inte synliga förrän deadline för tävlingen är över.
 
Föregående
 
Nästa
HemHemSQLug.SESQLug.SETävlingarTävlingarSQLug.se challenge 2011SQLug.se challenge 2011


Annons