[英]mysql syntax error in inner join
我正在尝试通过内部联接执行查询,并添加一个位置,但出现以下错误:
1064-您的SQL语法有误; 查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'where order.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
表的意义,因为您永远不会从中选择任何内容。 也许您打算这样做,但是并没有将其纳入您的问题。
您不能在此处放置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查询的允许语法,以了解需要在何处放置不同部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.