Синтаксическая ошибка MySQL во внутреннем соединении - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь выполнить запрос с внутренним соединением и добавлением куда, но я получаю следующую ошибку:

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса возле 'где orders.user_id = 31)

И запрос структурирован следующим образом:

SELECT
    orders.id,
    order_details.order_id,
    orders.user_id,
    orders.numero_orden,
    order_details.part_id,
    order_details.cantidad
FROM
((orders
    INNER JOIN order_details
        ON orders.id = order_details.order_id
    where orders.user_id = 31) 
INNER JOIN parts
    ON order_details.part_id  = parts.id);

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы не можете поместить туда предложение WHERE, оно должно быть в конце, или вы можете попытаться оставить его там, где оно есть, и заменить WHERE на AND, чтобы сделать его частью предложения join. Я думаю, что результат будет таким же.

Так что либо:

SELECT
    orders.id,
    order_details.order_id,
    orders.user_id,
    orders.numero_orden,
    order_details.part_id,
    order_details.cantidad
FROM
    orders
    INNER JOIN order_details
        ON orders.id = order_details.order_id
    INNER JOIN parts
        ON order_details.part_id  = parts.id
WHERE 
    orders.user_id = 31;

или

SELECT
    orders.id,
    order_details.order_id,
    orders.user_id,
    orders.numero_orden,
    order_details.part_id,
    order_details.cantidad
FROM
    orders
    INNER JOIN order_details
        ON orders.id = order_details.order_id
           AND orders.user_id = 31
    INNER JOIN parts
        ON order_details.part_id  = parts.id;

Не уверен, что вам действительно нужны эти скобки вокруг соединений, поэтому я удалил их. Я бы порекомендовал вам, возможно, вам следует изучить разрешенный синтаксис для SQL-запроса более подробно, чтобы понять, где вам нужно разместить различные части.

0 голосов
/ 29 августа 2018

Ваш запрос выглядит так, как будто вы пытаетесь использовать синтаксис MS Access. В MySQL вам не нужно заключать компоненты множественного объединения в круглые скобки. Рассмотрим эту версию:

SELECT
    o.id,
    od.order_id,
    o.user_id,
    o.numero_orden,
    od.part_id,
    od.cantidad
FROM orders o
INNER JOIN order_details od
    ON o.id = od.order_id
INNER JOIN parts p
    ON od.part_id  = p.id
WHERE
    o.user_id = 31;

Примечания. Я реорганизовал ваш запрос, чтобы использовать псевдонимы таблиц, что значительно облегчило его чтение. Кроме того, я не вижу смысла в присоединении к таблице parts, потому что вы никогда ничего не выбираете из нее. Возможно, вы намеревались сделать это, но это не превратило это в ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...