簡體   English   中英

內部連接中的mysql語法錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM