Meantime, I did some reading and came up with this ->
SELECT sc.col1 FROM search s, search_content sc WHERE s.word IN ('apache', 'mysql') AND s.wid = sc.wid
Thanks for the tip.
DL Neil wrote:
Im looking for another opinion on an sql statement.AND s.wid = sc.wid OR s.word = 'apache' AND s.wid = sc.wid;
SELECT sc.col1 FROM search s, search_content sc WHERE s.word = 'mysql' >
I had to use "s.wid = sc.wid" twice in the sql for the query to work
properly. Is this the legal, correct way to do so.
You're perfectly legal, but have become tangled up in the rules of operator
precedence. In fact MySQL's optimiser probably takes care of it all for you.
Precedence says that if there are multiple operators they will be executed
from left to right, unless one is considered more important than the other,
eg * precedes +, or in your case, AND precedes OR.
To override precedence, or merely to help with readability, one may employ
parentheses - calculations within parentheses are performed first. Thus the
WHERE ( s.word = 'mysql' AND s.wid = sc.wid )
OR ( s.word = 'apache' AND s.wid = sc.wid );
Now one can apply Boolean algebra and rationalise the apparent duplication:
WHERE s.wid = sc.wid
AND ( s.word = 'mysql' OR s.word = 'apache' );
As to which is 'right' and which 'wrong', let me ask: which one do you find
-- Gerard Samuel http://www.trini0.org:81/ http://dev.trini0.org:81/
-- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php