Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 How to find non existing rows in a table?

Author  Topic 

ChristopheB
Starting Member

3 Posts

Posted - 2008-09-22 : 10:43:07
I have three tables with their respective columns:

TableA
A_ID

TableB (mapping of table A and C)
B_ID
A_ID
C_ID

TableC
C_ID
C_TYPE

How can I find all the rows in TableA that are not present in tableB for the C_TYPE='4' ? (It is however possible that there are rows in TableB for A_ID, but for a different C_Type.)

Select A_ID
from TableA
left outer join TableB on TableA.A_ID = TableB.A_ID
left outer join TableC on TableB.C_ID = TableC.C_ID And C_TYPE = 4
WHERE ???




visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-09-22 : 10:54:09
[code]Select a.A_ID
from TableA a
left outer join TableB b on a.A_ID = b.A_ID
left outer join TableC c on b.C_ID = c.C_ID And c.C_TYPE = 4
WHERE b.A_ID IS NULL[/code]
Go to Top of Page

SwePeso
Patron Saint of Lost Yaks

30421 Posts

Posted - 2008-09-22 : 11:10:27
Two left joins?
DECLARE	@TableA TABLE
(
A_ID INT
)

INSERT @TableA
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 4

DECLARE @TableB TABLE
(
A_ID INT,
B_ID INT,
C_ID INT
)

INSERT @TableB
SELECT 1, 2, 3 UNION ALL
SELECT 2, 4, 6

DECLARE @TableC TABLE
(
C_ID INT,
C_TYPE INT
)

INSERT @TableC
SELECT 3, 3 UNION ALL
SELECT 6, 4

SELECT *
FROM @TableA

SELECT *
FROM @TableB

SELECT *
FROM @TableC

-- visakh16
Select a.A_ID
from @TableA a
left join @TableB b on a.A_ID = b.A_ID
left join @TableC c on b.C_ID = c.C_ID And c.C_TYPE = 4
WHERE b.A_ID IS NULL

-- Peso
SELECT a.A_ID
FROM @TableA AS a
LEFT JOIN (
SELECT b.A_ID
FROM @TableB AS b
INNER JOIN @TableC AS c ON c.C_ID = b.C_ID
WHERE c.C_TYPE = 4
) AS z ON z.A_ID = a.A_ID
WHERE z.A_ID IS NULL



E 12°55'05.63"
N 56°04'39.26"
Go to Top of Page
   

- Advertisement -