内部联接中的mysql语法错误
我尝试使用内部联接执行查询并添加where,但出现以下错误: 1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近“where orders.user_id=31) 查询的结构如下所示:内部联接中的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
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查询允许的语法,以了解需要将不同部分放置在何处