Solved

Transact-SQL Statement.

Posted on 1998-12-01
4
205 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
  • 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

Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Select2 jquery help 9 45
Link SQL table to Webpage 9 38
SQL index creation taking an abnormally long time 2 20
Azure SQL DB? 3 19
Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

760 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now