mysql语法错误

14ifxucb  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(309)

我尝试使用内部联接执行查询并添加where,但出现以下错误:
1064-您的sql语法有错误;查看与您的mysql服务器版本相对应的手册,了解在“where orders.user\u 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);
ih99xse1

ih99xse11#

你不能把where子句放在那里,它必须放在末尾,或者你可以试着把它放在原地,用and替换where,使它成为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查询的允许语法,以了解需要将不同部分放置在何处。

4smxwvx5

4smxwvx52#

您的查询看起来像是在尝试使用ms access语法。在mysql中,不需要用括号 Package 多连接的组件。考虑这个版本:

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 表,因为您从不从中选择任何内容。也许你打算那样做,但这并没有成为你的问题。

相关问题