Solved

Left Outer Join with only 1 result

Posted on 2013-01-18
7
359 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
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 
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

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

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

I have written a PowerShell script to "walk" the security structure of each SQL instance to find:         Each Login (Windows or SQL)             * Its Server Roles             * Every database to which the login is mapped             * The associated "Database User" for this …
There have been several questions about Large Transaction Log Files in SQL Server 2008, and how to get rid of them when disk space has become critical. This article will explain how to disable full recovery and implement simple recovery that carries…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

735 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