OK... I actually looked in the manual this time to get some clarification - http://dev.mysql.com/doc/refman/5.0/en/join.html:

"INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table)."

"Generally, you should use the ON clause for conditions that specify how to join tables, and the WHERE clause to restrict which rows you want in the result set."

For your question Adrian... I can't find any information backing this up... but I'm pretty sure that INNER JOIN...ON and JOIN...ON are synonymous. I did find this "In MySQL, CROSS JOIN is a syntactic equivalent to INNER JOIN (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise." In the join syntax definition they show "table_reference [INNER | CROSS] JOIN table_factor [join_condition] " -- and that's why I think they're synonymous -- at least in MySQL.

I also found the old conversation... now I remember what it was about. I saw an article on contentwithstyle.co.uk saying that INNER JOINs were faster and posted it to the list - http://lists.nyphp.org/ pipermail/mysql/2006-July/000162.html Ellen Coen responded that she didn't know about the validity of it, but felt that the more specific, the better. That sounded good to me. http:// lists.nyphp.org/pipermail/mysql/2006-July/000163.html So I guess the consensus was just between the two of us... if anyone else can come up with a good argument or knows anything more about what the database does behind the scenes, feel free to chime in.

Thanks,
Rob

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to