leafer Posted October 20, 2009 Share Posted October 20, 2009 Here's the statement that doesn't entirely work the way it should: $query = "SELECT name FROM thedatabase "; $query .= "WHERE position LIKE '%$position1%' OR position LIKE '%$position2%' OR position LIKE '%$position3%' "; $query .= "OR position LIKE '%$position4%' AND league = '$league' ORDER BY rank ASC LIMIT 5"; Now within my code I have a broad statement which doesn't use the "AND league = '$league'" part and it works perfectly. Once I include the and league part it's almost as if the statement isn't even there. With and without that portion the result is the same. Basically what I'm trying to accomplish with this statement is: If any of the positions exist BUT contain StringX within the league column then return ORDER BY rank ASC LIMIT 5. It seems as if it's treating that AND statement as an OR and once it finds a match ignores the rest. Any ideas? Quote Link to comment https://forums.phpfreaks.com/topic/178368-solved-likeorand-statement-that-almost-works-need-help/ Share on other sites More sharing options...
DavidAM Posted October 20, 2009 Share Posted October 20, 2009 Precedence! (is that spelled right?) wrap all the OR's in parenthesis so if ANY one is true AND the league is true ... WHERE ( position LIKE '%$position1%' OR position LIKE '%$position2%' OR position LIKE '%$position3%' OR position LIKE '%$position4%' ) AND league = '$league' otherwise the AND is attached to the last position condition (#4) so it is acting like this: WHERE position LIKE '%$position1%' OR position LIKE '%$position2%' OR position LIKE '%$position3%' OR ( position LIKE '%$position4%' AND league = '$league' ) Quote Link to comment https://forums.phpfreaks.com/topic/178368-solved-likeorand-statement-that-almost-works-need-help/#findComment-940736 Share on other sites More sharing options...
leafer Posted October 22, 2009 Author Share Posted October 22, 2009 Precedence! (is that spelled right?) wrap all the OR's in parenthesis so if ANY one is true AND the league is true ... WHERE ( position LIKE '%$position1%' OR position LIKE '%$position2%' OR position LIKE '%$position3%' OR position LIKE '%$position4%' ) AND league = '$league' otherwise the AND is attached to the last position condition (#4) so it is acting like this: WHERE position LIKE '%$position1%' OR position LIKE '%$position2%' OR position LIKE '%$position3%' OR ( position LIKE '%$position4%' AND league = '$league' ) Excellent Dave. It works perfectly. Quote Link to comment https://forums.phpfreaks.com/topic/178368-solved-likeorand-statement-that-almost-works-need-help/#findComment-941614 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.