Denoteone
Denoteone

Reputation: 4055

SQL QUERY returning all results using OR in WHERE statement

Hoping I am just missing something simple here:

    $sql = "Select * FROM user_info, user_login WHERE user_login.status = '0' OR user_login.status = '2' AND user_info.uid = user_login.uid";

$db = new connection();
                $results = $db->query($sql);

$user = array();    

while($info = mysql_fetch_array($results))

{

$user[] = $info;

}

$total = count($user);
//TEST the amount of rows returned.
echo $total;

for ($i = 0; $i < $total; $i++)
{

//echo data;
}

just trying to pull all data that has the user_login.status field set to "0" or "2" but it shows everything thing and it shows the items marked as 2 twice. Does anyone see my issue?

Upvotes: 2

Views: 369

Answers (2)

Brian Roach
Brian Roach

Reputation: 76908

Select * FROM user_info, user_login WHERE (user_login.status = '0' OR user_login.status = '2') AND user_info.uid = user_login.uid

Order of precedence :)

Upvotes: 3

squillman
squillman

Reputation: 13641

Your precedence is getting whacked because of missing parentheses:

SELECT DISTINCT *
FROM user_info, user_login
WHERE (user_login.status = '0' OR user_login.status = '2')
AND user_info.uid = user_login.uid

Without seeing the data I can't give you more than a SELECT DISTINCT with regards to the duplicate records.

Upvotes: 8

Related Questions