SQL`order`.id未知列中的变量范围
在以下查询中,“on子句”中的错误未知列“order.id”由内部联接中的my order.id引用引发。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
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