gpt4 book ai didi

mysql - 在子查询中使用父字段

转载 作者:可可西里 更新时间:2023-11-01 08:31:36 24 4
gpt4 key购买 nike

我在 Prestashop 1.4 数据库上有以下查询,但我不知道如何在子查询中使用父 id_order 字段。

错误消息是 “#1054 - 'o.id_order' 字段在 where 子句中未知”

我尝试使用左连接但得到了同样的错误。

order 和 order_detail 表都有一个 id_order 字段。一个订单可以有多个 order_detail 行。

SELECT 
o.invoice_date,
o.invoice_number,
(
SELECT ROUND(SUM(price),2) FROM
(
SELECT (od.product_price * od.tax_rate / 100) as `price`
FROM order_detail od
WHERE od.id_order = o.id_order
) as `tmp`
) as `tax`
FROM `order` o
WHERE o.invoice_number != 0 ...

是因为我试图在 where 子句中使用它吗?

在下面的查询中(在这种情况下不能使用它),o.id_order 是众所周知的...

(   
SELECT ROUND(SUM(total_amount),2)
FROM order_detail_tax ot
WHERE ot.id_tax = 2 AND ot.id_order_detail
IN (
SELECT od.id_order_detail
FROM order_detail od
WHERE od.id_order = o.id_order
)
) as `Tax`,

最佳答案

尝试只使用一个子查询:

SELECT 
o.invoice_date,
o.invoice_number,
(
SELECT ROUND(SUM(od.product_price * od.tax_rate / 100), 2)
FROM order_detail od
WHERE od.id_order = o.id_order
) as `tax`
FROM `order` o
WHERE o.invoice_number != 0

因为,如果嵌套两个子查询,最里面的子查询将无法引用外部的子查询。

关于mysql - 在子查询中使用父字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com