Control Freak
Control Freak

Reputation: 13243

How to use Join as a Select column

I have the following query:

SELECT X.ID, X.NAME, CASE R.ID WHEN NOT NULL THEN 1 ELSE 0 END ISRELATED
FROM TABLE X
INNER JOIN RELATIVE R ON R.NAMEID = X.ID

I'm trying to get results look like this structure, and not pull any duplicate rows from table X:

ID
NAME
ISRELATED (boolean)

Any suggestions? Thanks.

Upvotes: 0

Views: 108

Answers (3)

Oleg Dok
Oleg Dok

Reputation: 21766

I think that you has an error in CASE and have to use LEFT JOIN

SELECT DISTINCT
    X.ID, 
    X.NAME, 
    CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED 
FROM TABLE X 
LEFT JOIN RELATIVE R ON R.NAMEID = X.ID 

Upvotes: 0

legendofawesomeness
legendofawesomeness

Reputation: 2911

Using INNER JOIN will return only those rows from X which have a corresponding row in R. Use Left outer join instead.

SELECT DISTINCT X.ID, X.NAME, CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED 
FROM TABLE X 
LEFT OUTER JOIN RELATIVE R ON R.NAMEID = X.ID 

Upvotes: 2

Kris Ivanov
Kris Ivanov

Reputation: 10598

try this

SELECT DISTINCT X.ID, X.NAME, CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED 
FROM TABLE X 
INNER JOIN RELATIVE R ON R.NAMEID = X.ID 

Upvotes: 0

Related Questions