Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Microsoft SQL Server > select parent r...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 3 Topic 10979 of 11431
Post > Topic >>

select parent records that do not have a particular child

by d-42 <db.porsche@[EMAIL PROTECTED] > Apr 18, 2008 at 05:55 AM

Hi,

I've got a many-many relation****p between people and locations:

Persons {personid, namefirst, accountid}
Locations {locationid, locationname, accountid}

// many-many join table
PersonLocation {personid, locationid}

I want to find all the people who belong to a particular account, who
are not associated with a particular location.

For example:

ie: If I've got 4 people:

{1, Homer, x}
{2, Marge, x}
{3, Ned, x}
{4, Moe, x}
{5, Bullwinkle, y}

and two locations:

{1, Simpson's Home, x}
{2, Moe's Tavern, x}

and a match table as follows:
Homer has both the home, and the bar
Marge has just the home.
Ned has none.
Moe has just the bar.
Bullwinkle has none.

or records: {1,1}, {1,2}, {2,1},{4,2}

I want to find all the people who belong to account 'x', who are NOT
associated with Moe's Tavern.
i.e. -- I want to return just Marge and Ned.

I came up with this:

@[EMAIL PROTECTED]
 is the accountid I'm interested in.
@[EMAIL PROTECTED]
 is the locationid I'm interested in.

SELECT
        [t0].[personid] AS [personid],
        [t0].[namefirst] AS [namefirst],
        [t0].[accountid] AS [accountid],
        [t1].[locationid] AS [locationid]
FROM [dbo].[Persons] AS [t0]
LEFT OUTER JOIN
       (SELECT [t2].[personid], [t2].[locationid] FROM [dbo].
[PersonLocation] AS [t2]
               WHERE [t2].[locationid]=@[EMAIL PROTECTED]
)
       AS [t1] ON [t0].[personid] = [t1].[personid]
WHERE
        ([t0].[accountid] = @[EMAIL PROTECTED]
) AND
        ([t1].[locationid] IS NULL)

This appears to work, but is it the best way?

Thanks,
Dave

Thanks,
Dave
 




 3 Posts in Topic:
select parent records that do not have a particular child
d-42 <db.porsche@[EMAI  2008-04-18 05:55:13 
Re: select parent records that do not have a particular child
Ed Murphy <emurphy42@[  2008-04-18 07:13:36 
Re: select parent records that do not have a particular child
d-42 <db.porsche@[EMAI  2008-04-18 15:52:39 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Oct 15 13:48:38 CDT 2008.