SQL`order`.id未知列中的变量范围

SQL`order`.id未知列中的变量范围,sql,mysql,mysql-error-1054,Sql,Mysql,Mysql Error 1054,在以下查询中,“on子句”中的错误未知列“order.id”由内部联接中的my order.id引用引发。id列确实存在 知道为什么不能通过子查询访问它吗 SELECT SUM(price+shipping_price) AS total_sales, COUNT(id) AS total_orders, AVG(price+shipping_price) AS order_total_average, (SELECT SUM(quanti

在以下查询中,“on子句”中的错误未知列“order.id”由内部联接中的my order.id引用引发。id列确实存在

知道为什么不能通过子查询访问它吗

SELECT
    SUM(price+shipping_price) AS total_sales,
    COUNT(id) AS total_orders,
    AVG(price+shipping_price) AS order_total_average,
    (SELECT
            SUM(quantity)
        FROM `order_product`
        WHERE `order`.id = order_product.order_id
    ) as total_units,
    SUM(price+shipping_price)/7 as daily_average,
    (SELECT
            SUM(order_product.price * order_return_product.quantity)
        FROM order_return_product
        INNER JOIN order_product ON (
            order_product.order_id = `order`.id AND
            order_product.product_id = order_return_product.product_id AND
            order_product.vehicle_id = order_return_product.vehicle_id
        )
        WHERE return_id IN (
            SELECT
                id
            FROM order_return
            WHERE status_id != 3 AND
            order_return.order_id = `order`.id
        )
    ) as total_returns
FROM `order`
WHERE created >= 1278388801 AND
created <= 1279079999 AND
fraud = 0 AND
type_id = 4

在内部联接中注释order.id时,我没有收到任何错误,我认为问题在于order是mysql的关键字,所以请使用

`order`.`id `

order.id在此查询中超出范围-您只处理子查询中的order\u return\u product和order\u product表。

尝试以下操作:

SELECT
    SUM(order_product.price * order_return_product.quantity)
FROM order_return_product
INNER JOIN order_product ON (
    order_product.product_id = order_return_product.product_id AND
    order_product.vehicle_id = order_return_product.vehicle_id
)
WHERE return_id IN (
    SELECT
        id
    FROM order_return
    WHERE status_id != 3 AND
    order_return.order_id = `order`.id
) 
AND order_product.order_id = `order`.id 

。。。对于total_returns子查询

您没有在最里面的SELECT中包含order,所以在这一点上它必须是未知的,不是吗?它只是在内部联接中断开,在我使用它的任何地方都可以正常工作。我不认为是这样-只要它在引号中就可以工作。不过还是很好的回答。但我仍然可以访问我认为。。。。如果它超出了范围,我怎么能在另一个子查询中使用它呢?你在另一个子查询的WHERE子句中使用它,这很好。该错误是因为您试图在ON子句中为不使用order作为其表之一的查询使用order.id。
SELECT
    SUM(order_product.price * order_return_product.quantity)
FROM order_return_product
INNER JOIN order_product ON (
    order_product.product_id = order_return_product.product_id AND
    order_product.vehicle_id = order_return_product.vehicle_id
)
WHERE return_id IN (
    SELECT
        id
    FROM order_return
    WHERE status_id != 3 AND
    order_return.order_id = `order`.id
) 
AND order_product.order_id = `order`.id