SQL Server Developer Center > SQL Server Forums > Transact-SQL > Optional innerjoin parameter?
Ask a questionAsk a question
 

AnswerOptional innerjoin parameter?

  • Friday, November 06, 2009 9:34 PMAznDude Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Has Code
    Hi I am looking for a way to make an INNER JOIN optional, say when the user doesn't put in a zip code parameter. This is my SQL. The #TempZips section is what I am focusing on.

    SELECT * FROM (Users INNER JOIN Photos ON Users.UserID = Photos.UserID)
    			INNER JOIN Profile ON Users.UserID = Profile.UserID 
    			INNER JOIN #TempZips Zips ON (Zips.ZipCode = Profile.Zip OR Zips.ZipCode = null)
    			WHERE Profile.Age BETWEEN 18 AND 99 AND 
    			(Profile.Zip IS NOT NULl)

Answers

  • Friday, November 06, 2009 9:46 PMAbdshall Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    You can change the INNER JOIN to LEFT OUTER JOIN, as follows

    SELECT * FROM (Users INNER JOIN Photos ON Users.UserID = Photos.UserID)
    			INNER JOIN Profile ON Users.UserID = Profile.UserID 
    			LEFT OUTER JOIN #TempZips Zips ON (Zips.ZipCode = Profile.Zip )
    			WHERE Profile.Age BETWEEN 18 AND 99 AND 
    			(Profile.Zip IS NOT NULl)


    Abdallah, PMP, ITIL, MCTS
    • Marked As Answer byAznDude Friday, November 06, 2009 10:23 PM
    •  

All Replies

  • Friday, November 06, 2009 9:46 PMAbdshall Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    You can change the INNER JOIN to LEFT OUTER JOIN, as follows

    SELECT * FROM (Users INNER JOIN Photos ON Users.UserID = Photos.UserID)
    			INNER JOIN Profile ON Users.UserID = Profile.UserID 
    			LEFT OUTER JOIN #TempZips Zips ON (Zips.ZipCode = Profile.Zip )
    			WHERE Profile.Age BETWEEN 18 AND 99 AND 
    			(Profile.Zip IS NOT NULl)


    Abdallah, PMP, ITIL, MCTS
    • Marked As Answer byAznDude Friday, November 06, 2009 10:23 PM
    •