Solved

Transact-SQL Statement.

Posted on 1998-12-01
4
244 Views
Last Modified: 2010-03-19
I have the following structure of 3 tables with the key fields shown.
TableA        TableB          TableC
TA_Key <----> TA_Key <------> TA_Key
              TB_Year         TB_Year
with the tables linked as shown.
In order to set up a text file with details from the three
tables I have set up a stored proc with the following statement.
SELECT * from TableA, TableB, TableC
WHERE TableA.TA_Key = @p1 AND TableA.TA_Key = TableB_TA_Key
AND TableA.TA_Key = TableC.TA_Key.

This returns me resultsets perfectly fine except in the
situations where a row exists on TableA and TableB but not
on TableC or some combination of this.
In this situation I would like the resultset to return me
the TableA and TableB rows and the TableC row as blank.
Whats the best way to write my SQL Statement ?.
ED.
0
Comment
Question by:eryan
[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
  • 2
4 Comments
 
LVL 2

Expert Comment

by:odessa
ID: 1092022
Try to use some like "TA_Key = NULL" in this way

SELECT * from TableA, TableB, TableC
WHERE ((TableA.TA_Key = @p1) or (TableA.TA_Key = NULL)) and
      ((TableB.TA_Key = @p1) or (TableB.TA_Key = NULL)) and
      ((TableC.TA_Key = @p1) or (TableC.TA_Key = NULL))
0
 

Author Comment

by:eryan
ID: 1092023
Odessa,
That still only returns me a result set if tablesA,B,C all have
a matching Key.
I.E If there is a TableA row with key = 12
                a TableB row with key = 12, 1998
                a TableC row with key = 12, 1998 its fine
but if the tableC row does not exist, then a blank resultsset
is returned.
ED

0
 
LVL 2

Accepted Solution

by:
tschill120198 earned 70 total points
ID: 1092024
You need to use outer joins to tables B and C...

    select  a.TA_Key,
          b.year,
            c.year
    from    tableA a
            left outer join tableB b on (a.TA_Key = b.TA_Key)
            left outer join tableC c on (a.TA_Key = c.TA_Key)
    where   a.TA_Key = @p1

This will give you back nulls for tables B and C when they don't have a value... if you really want a "blank" you can convert the column in the result
0
 

Author Comment

by:eryan
ID: 1092025
Tschill,
Thanks for that, exactly what I needed.
ED.

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
A Stored Procedure in Microsoft SQL Server is a powerful feature that it can be used to execute the Data Manipulation Language (DML) or Data Definition Language (DDL). Depending on business requirements, a single Stored Procedure can return differe…
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.
Viewers will learn how the fundamental information of how to create a table.

728 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