2012-01-11 37 views
1

我可能会在双目失明,但经历了很多版本的迭代,并试图删除...断字和AS语句...我的(不是复杂的)MySQL-Query有什么问题?

我总是从我的MySql5.1结束了解析错误1064服务器。 我真的相信这是有效的,SQL回答:

是否有什么建议吗?

SELECT (dpa_articles.name, [...] corporations.isin) FROM corporations 
NATURAL JOIN corporations_dpa_articles ON (corporations.id = corporations_dpa_articles.corporation_id) 
NATURAL JOIN dpa_articles ON (dpa_articles.id = corporations_dpa_articles.dpa_article_id) 
NATURAL JOIN dpa_articles_dpa_categories ON (dpa_articles.id = dpa_articles_dpa_categories.dpa_article_id) 
WHERE dpa_articles_dpa_categories.dpa_category_id = 28 

#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法使用近“ON(corporations.id = corporations_dpa_articles.corporation_id) 自然连接dpa_a”在行3

非常感谢你提前手册。

+0

阅读本文http://www.roseindia.net/sql/sqljoin/mysql-natural-join.shtml可能自然连接不需要'ON()子句' – Dau 2012-01-11 14:35:13

回答

2

NATURAL JOIN不应该有一个ON条款。

的加盟条件是隐含的,基于列名。

您需要INNER JOIN列名称是不同的。 id将不会自然加入corporation_id

0

你尝试取消包裹在加入语句ON条款?

而且,你可能要考虑使用比natural join一个不同的连接。 Natural join s不会像其他连接方法那样给予您足够的控制权,并且我不确定是否指定它所连接的列甚至是有效的。 inner join可能是更合适。