"PaginaDeSpud" <[EMAIL PROTECTED]> wrote on 12/27/2005 03:33:58 
PM:

> hi,
> I've upgraded from mysql 4.1 to mysql 5 and some queries doesn't work. 
It's 
> not explained on mysql changes incompatibilities...
> 
> for example:
> 
<snip>
> FROM yabbse_topics, yabbse_messages, yabbse_messages as m2 LEFT JOIN 
> yabbse_members AS mem ON (mem.ID_MEMBER=yabbse_messages.ID_MEMBER) LEFT 
JOIN 
> yabbse_members AS mem2 ON (mem2.ID_MEMBER=m2.ID_MEMBER) LEFT JOIN 
> yabbse_log_topics AS lt ON (lt.ID_TOPIC=yabbse_topics.ID_TOPIC AND 
> lt.ID_MEMBER=2) LEFT JOIN yabbse_log_mark_read AS lmr ON (lmr.ID_BOARD=3 
AND 
> lmr.ID_MEMBER=2)
> 
> WHERE yabbse_topics.ID_TOPIC IN 
> (38562,39516,66603,24732,67085,59867,43884,68331,68330,56897,68090,
> 68144,68174,68202,68329,68280,68258,68294,68299,68326,68325,67977,
> 67286,55125,67897,65748,68316,68317,68152,68291,68187,68000,68240,
> 68237,66796,68271,67486,57293,68027,67332,67990,68089,68072,42517,
> 68315,63612,66121,68275,68032,68261,68308,67919,68305,68302,68300,
> 68296,40983,68256,68293,68295,68270,68212,68198,45444,67246,68215,
> 68264,68208,68133,67017) 
> AND yabbse_messages.ID_MSG=yabbse_topics.ID_LAST_MSG AND 
> m2.ID_MSG=yabbse_topics.ID_FIRST_MSG ORDER BY t.isSticky DESC, 
> yabbse_messages.posterTime DESC
> 
> ERROR: Unknown column 'yabbse_messages.ID_MEMBER' in 'on clause'
<snip> 

I don't know which incompatible change list you looked at but it is 
definitely on the top of this page:

http://dev.mysql.com/doc/refman/5.0/en/news-5-0-12.html
complete with a link to more information: 
http://dev.mysql.com/doc/refman/5.0/en/join.html

Once you read over that, if you can't find the flaw in your query come 
back to the list and I or someone else will help point it out to you. Your 
query has always been broken, it's just that some of the bugs in the SQL 
engine were eliminated with 5.0.12 so that it evaluates SQL statements 
more according to the specification and your query cannot be evaluated 
according to the updated rules.

It's like having a bad spell-checker in a word processing appliction. You 
could go for months using one spelling of a word and never get flagged for 
it. However if you upgraded the spell-checker it may start flagging you on 
the same word that used to pass muster in the old version. This is a good 
thing because as your query becomes more ANSI compliant, it becomes more 
likely to be used cross-platform and not just on MySQL. 

As an observation: unless you are using the comma-separated form of 
creating an implicit CROSS JOIN, you don't get caught by the tightening of 
the rules. Nobody has posted a question of this same nature to the list 
that only uses explicit JOIN statements. hmmm.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine





Reply via email to