Solved

Left Outer Join with only 1 result

Posted on 2013-01-18
7
363 Views
Last Modified: 2013-01-18
I want to run a sql query using a left outer join, but I only want to return the first result, not all.

Table1:
ParentID 2

Table 2:
ID1 ParentID2
ID2 ParentID2
ID3 ParentId2

So when the rows are joined we have:

ParentID 2& Id1 only, not ID2 and ID3.

How do I do that?

I want to check the null value of the Id1 column to see if there is a record in that table, but I definitely don't want my parent row to show up 3 times, just the once.

thanks.
0
Comment
Question by:Starr Duskk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 38793922
Please view his article 8806085321953
0
 
LVL 143

Assisted Solution

by:Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3] earned 100 total points
ID: 38793929
0
 
LVL 2

Author Comment

by:Starr Duskk
ID: 38794032
that doesn't help.

A DISTINCT won't work because the value of the joined table's primary ID field is going to be unique.

I also don't see how a group by is going to resolve this.

Do you or anyone have any specific solutions to my problem?

thanks.
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 38794040
the "ROWNUMBER()" method will work, and that is exactly what the article is about :)
0
 
LVL 2

Author Comment

by:Starr Duskk
ID: 38794050
I feel I'm on a wild goose chase. I don't find any code in there using a JOIN and the snippet they have for mssql server doesn't show a row number. So unless you can dredge out of that article a snippet for me that works, I'm not closing this.
0
 
LVL 26

Accepted Solution

by:
Chris Luttrell earned 400 total points
ID: 38794135
This is what andelIII is trying to show you in his article, you end up with something like this where you use the ROW_NUMBER() function to assign a rank (the row_number) per grouping (the Partition) to your secondary table so that when you join to it, you can match on just the first value.
SELECT * -- Pick the columns you want to see here
FROM dbo.Table1 T
LEFT OUTER JOIN (SELECT *, ROW_NUMBER() OVER (PARTITION BY ParentID ORDER BY ID) rn
				FROM dbo.Table2 T2) T2 ON T.ParentID = T2.ParentID AND rn = 1

Open in new window

You get results like this (I put an ID of 1 with no children to show it works both with and without child records)
Results
0
 
LVL 2

Author Closing Comment

by:Starr Duskk
ID: 38794553
Thanks for all the additional effort!
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is basically a blog post I wrote recently. I've found that SARGability is poorly understood, and since many people don't read blogs, I figured I'd post it here as an article. SARGable is an adjective in SQL that means that an item can be fou…
How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

737 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question