You are here: Re: find matching sets of rows « MsSQL Server « IT news, forums, messages
Re: find matching sets of rows

Posted by Tom Moreau on 04/12/06 01:43

Our solutions fall into the category of "Relational Division". In both
solutions, we allow for a remainder. What you want is exact division.
Here's a solution for exact division:

SELECT a.B
FROM @a a
left
join @a b on b.C = a.C
and b.D = a.D
and b.B = 200
where a.B <> 200
group by
a.B
having
count (distinct a.D) = (select count (distinct D) from @a where B = 200)

If A is an identity, you could use count (distinct A) where applicable.

--
Tom

----------------------------------------------------
Thomas A. Moreau, BSc, PhD, MCSE, MCDBA
SQL Server MVP
Toronto, ON Canada
..
"figital" <mharen@gmail.com> wrote in message
news:1144792950.602964.118760@g10g2000cwb.googlegroups.com...
DECLARE @a TABLE(A int IDENTITY(1,1) PRIMARY KEY, B int, C int, D int);


INSERT INTO @a (B, C, D) VALUES (100, 30, 1)
INSERT INTO @a (B, C, D) VALUES (100, 30, 2)
INSERT INTO @a (B, C, D) VALUES (100, 30, 3)
INSERT INTO @a (B, C, D) VALUES (100, 40, 4)
INSERT INTO @a (B, C, D) VALUES (100, 40, 5)
INSERT INTO @a (B, C, D) VALUES (200, 30, 1)
INSERT INTO @a (B, C, D) VALUES (200, 30, 2)
INSERT INTO @a (B, C, D) VALUES (200, 30, 3)
INSERT INTO @a (B, C, D) VALUES (200, 40, 4)
INSERT INTO @a (B, C, D) VALUES (200, 40, 5)
INSERT INTO @a (B, C, D) VALUES (300, 30, 1)
INSERT INTO @a (B, C, D) VALUES (300, 30, 2)
INSERT INTO @a (B, C, D) VALUES (300, 40, 3)
INSERT INTO @a (B, C, D) VALUES (400, 40, 4)
INSERT INTO @a (B, C, D) VALUES (400, 40, 5)
INSERT INTO @a (B, C, D) VALUES (500, 30, 1)
INSERT INTO @a (B, C, D) VALUES (500, 30, 2)
INSERT INTO @a (B, C, D) VALUES (500, 30, 3)
INSERT INTO @a (B, C, D) VALUES (500, 40, 4)
INSERT INTO @a (B, C, D) VALUES (500, 40, 5)
INSERT INTO @a (B, C, D) VALUES (500, 31, 6)

--SELECT * FROM @a

DECLARE @i INT ;
SET @i = 200 ;

-- solution

The above solutions return 500 even though it contains _6_ records and
200 contains 5 records.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация