Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部联接中的mysql语法错误_Mysql_Sql - Fatal编程技术网

内部联接中的mysql语法错误

内部联接中的mysql语法错误,mysql,sql,Mysql,Sql,我尝试使用内部联接执行查询并添加where,但出现以下错误: 1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近“where orders.user_id=31) 查询的结构如下所示: SELECT orders.id, order_details.order_id, orders.user_id, orders.numero_orden, order_details.part_id, order_d

我尝试使用内部联接执行查询并添加where,但出现以下错误:

1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近“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
    where orders.user_id = 31) 
INNER JOIN parts
    ON order_details.part_id  = parts.id);

您的查询似乎正在尝试使用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
表有什么意义,因为您从未从中选择任何内容。也许您打算这样做,但这并没有成为您的问题。

您的查询看起来像是在尝试使用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
表有什么意义,因为您从未从中选择任何内容。也许您打算这样做,但这并没有成为您的问题。

您不能将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;


我也不确定你是否真的需要连接周围的括号,所以我把它们去掉了。我建议您更详细地研究SQL查询允许的语法,以了解需要将不同部分放置在何处。

您不能将where子句放在那里,它需要放在末尾,或者您可以尝试将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;

我也不确定你是否真的需要连接周围的括号,所以我把它们去掉了。我建议您更详细地研究SQL查询允许的语法,以了解需要将不同部分放置在何处