How to use the case statement to determine which field to the left joins

I have a query that should be able to join the field left in the right place, given the condition that the field is equal to a variable.

Sort of:

CASE WHEN challenges.userID = $var LEFT JOIN challengesRead ON challenges.userID = challengesRead.userID CASE WHEN challenges.opponentID = $var LEFT JOIN challengesRead ON challenges.opponentID = challengesRead.userID 

I think I'm on the right track, but I'm not sure how to put the request together. Thanks

+4
source share
2 answers

Something like this might work

 LEFT JOIN challengesRead ON challenges.userID = CASE WHEN challenges.userID = $var THEN challengesRead.userID WHEN challenges.opponentID = $var THEN challenges.opponen END 
+7
source

It seems you want this:

 LEFT JOIN challengesRead ON CASE WHEN challenges.userID = $var THEN challenges.userID WHEN challenges.opponentID = $var THEN challenges.opponentID END = challengesRead.userID 

which can be simplified to:

 LEFT JOIN challengesRead ON $var = challengesRead.userID AND ( challenges.userID = $var OR challenges.opponentID = $var ) 
0
source

All Articles