[英]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.