Что, черт возьми, не так с моим (не сложным) MySQL-Query? - PullRequest
1 голос
/ 11 января 2012

Я мог бы быть слепым на оба глаза, но итерируя по многим версиям и попыткам ... Удалил переносы и операторы AS ...

Я всегда заканчивал с парсингом Ошибка 1064 от моегоСервер MySql5.1.Я действительно считаю, что это действительно так, ответы на 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) NATURAL JOIN dpa_a' в строке 3

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 11 января 2012

NATURAL JOIN не должно содержать предложение ON.

Условие соединения неявно и основано на именах столбцов.

Вам нужно INNER JOIN, так как имена столбцов разные. id не будет естественным присоединением к corporation_id

0 голосов
/ 11 января 2012

Вы пытались распаковать предложение ON в операторах соединения?

Кроме того, вы можете рассмотреть возможность использования соединения, отличного от natural join. Natural join s не дают вам такого большого контроля, как другие методы соединения, и я не уверен, что указание столбца, к которому он присоединяется, даже допустимо. inner join может * более подходящим .

...