2012-01-11 38 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可能是更合適。