where 子句中的列“movimiento.fecha”未知

问题描述 投票:0回答:1
select
    det_movimiento.id,
    product.name,
    movimiento.fecha,
    det_movimiento.quantity,
    (
        select sum(quantity) total from
        (
            select quantity, id_product from det_ajuste da join ajuste a on ajuste.id = det_ajuste.id_ajuste where a.fecha <= movimiento.fecha
            union
            select quantity, id_product from det_movimiento dm join movimiento m on movimiento.id = det_movimiento.id_movimiento where m.fecha <= movimiento.fecha
        ) t
    ) total
from det_movimiento
join movimiento on movimiento.id = det_movimiento.id_movimiento
join product on product.id = det_movimiento.id_product
order by movimiento.fecha desc;

我正在尝试在子查询中使用父查询中的“movimiento.fecha”列。但我收到这个错误。

“where 子句中的列‘movement.date’未知”、“where 子句中的列‘movement.date’未知”

我不知道我做错了什么😢

测试: https://www.db-fiddle.com/f/eqRr3cXnK3L26PfyQh3vNa/1

sql mysql sum subquery
1个回答
0
投票

您需要表的两个实例的别名。 始终对任何足够大以引用至少三个对象的查询上的所有表/视图使用别名,包括无处不在您引用这些对象:

select
    dm.id,
    p.name,
    m.fecha,
    dm.quantity,
    (
        select sum(quantity) total from
        (
            select quantity, id_product from det_ajuste da join ajuste a on a.id = da.id_ajuste where a.fecha <= m.fecha
            union
            select quantity, id_product from det_movimiento dm0 join movimiento m0 on m0.id = dm0.id_movimiento where m0.fecha <= m.fecha
        ) t
    ) total
from det_movimiento dm
join movimiento d on m.id = dm.id_movimiento
join product p on p.id = dm.id_product
order by m.fecha desc;
© www.soinside.com 2019 - 2024. All rights reserved.