I'm getting SQL errors on MySQL 5 saying it can't find a column - but it's there!

1054 - Unknown column 'a.c' in 'on clause'

This can happen if you're doing something like:

SELECT * FROM
a, b
LEFT JOIN c ON a.d = c.e;

...which looks, on the surface of it, fine. But it's invalid SQL; bugs in earlier versions of MySQL (4.x) caused it to be parsed as above and appear to work, but the SQL standard says it should be read as:

SELECT * FROM
a,
b LEFT JOIN c ON a.d = c.e;

...and you can see that the LEFT JOIN no longer makes any sense. So, to fix your SQL, you need to either move the JOIN statement so it's between the two tables it's joining:

SELECT * FROM
a LEFT JOIN c ON a.d = c.e,
b;

...or explicitly group like ((a,b),c) instead of (a,(b,c)):

SELECT * FROM
(a,
b) LEFT JOIN c ON a.d = c.e;

  • 181 Users Found This Useful
Was this answer helpful?

Related Articles

My PHP script gives the error 'Call to undefined function: mysql_connect()'

This error is usually caused by unecessary or incorrect directives in a custom php.ini file.We...

Possible issues with OSCommerce and MySQL5

We have been made aware that some customers may have issues with their OSCommerce installations...

My script states that the MAX_JOIN_SIZE setting in MySQL set to low. How do I increase it?

MySQL will refuse to execute select statements that process a very large number of rows. You...

I have software that requires MySQL 4 can this be provided instead of the current version.

MySQL 4 was less compliant with ANSI SQL - this was improved in version 5 and there are many...

Why am I getting a host blocked with 'mysqladmin flush-hosts' error?

Errors such as:-Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors; unblock with...