oracle sql中的左联接并没有返回左表的每个元素

oracle sql中的左联接并没有返回左表的每个元素,sql,oracle,join,Sql,Oracle,Join,我正在尝试获取表B_ARTICULOS上的所有元素,并将其他表连接起来进行一些计算,其中B_ARTICULOS的一些元素不存在,我知道我必须使用左连接,但我不知道我做错了什么 通过这个查询,我不会得到每一篇B_文章,只有其他表格上列出的那些 选择a.id,a.nombre, 如果a.id在dc.id_articulo中,则dc.cantidad ELSE 0结束cantidad_COMPRAS, 如果a.id在dc.id\u articulo中,那么dc.cantidad*a.costo ELS

我正在尝试获取表B_ARTICULOS上的所有元素,并将其他表连接起来进行一些计算,其中B_ARTICULOS的一些元素不存在,我知道我必须使用左连接,但我不知道我做错了什么

通过这个查询,我不会得到每一篇B_文章,只有其他表格上列出的那些

选择a.id,a.nombre, 如果a.id在dc.id_articulo中,则dc.cantidad ELSE 0结束cantidad_COMPRAS, 如果a.id在dc.id\u articulo中,那么dc.cantidad*a.costo ELSE 0结束MONTO\u COMPRAS, 如果a.id在dv.id_articulo中,那么dv.cantidad ELSE为0 END cantidad_VENTAS, 如果a.id在dv.id\u articulo中,则dv.cantidad*a.precio ELSE 0结束MONTO\u VENTAS 来自B_ARTICULOS a 左连接B_DETALLE_COMPRAS dc ON a.id=dc.id\u articulo 在dc.id\u compra=c.id上加入B\u COMPRAS c 在dv.id\u articulo=a.id上加入B_DETALLE\u VENTAS dv 在v.id=dv.id\u文塔上连接B_文塔v 其中a.id不为空;
我在这里看到的唯一解释是,除了第二个B_DETALLE_COMPRAS表之外,您应该加入其他一些表。假设到处都使用左连接:

SELECT
    a.id,
    a.nombre,
    CASE WHEN a.id IN dc.id_articulo THEN dc.cantidad ELSE 0 END CANTIDAD_COMPRAS,
    CASE WHEN a.id IN dc.id_articulo THEN dc.cantidad * a.costo ELSE 0 END MONTO_COMPRAS, 
    CASE WHEN a.id IN dv.id_articulo THEN dv.cantidad ELSE 0 END CANTIDAD_VENTAS, 
    CASE WHEN a.id IN dv.id_articulo THEN dv.cantidad * a.precio ELSE 0 END MONTO_VENTAS 
FROM B_ARTICULOS a
LEFT JOIN B_DETALLE_COMPRAS dc ON a.id = dc.id_articulo
LEFT JOIN B_COMPRAS c ON dc.id_compra = c.id
LEFT JOIN B_DETALLE_VENTAS dv ON dv.id_articulo = a.id
LEFT JOIN B_VENTAS v ON v.id = dv.id_venta
WHERE a.id IS NOT NULL;
对于其他表,也必须使用left join,如下所示:

... 来自B_ARTICULOS a 左连接B_DETALLE_COMPRAS dc ON a.id=dc.id\u articulo 在dc.id上左连接B_COMPRAS c_compra=c.id 在dv.id上左连接B_DETALLE_VENTAS dv\u articulo=a.id 在v.id=dv.id\u文塔上左连接B_文塔v ... 就我个人而言,我对所有相关表进行子查询,这些表将与主表保持连接。我将这些表分组,然后将它们左键连接到主节点,如下所示:

... 来自B_ARTICULOS a 左连接 选择dc* 来自B_DETALLE_COMPRAS dc 在dc.id\u compra=c.id上加入B\u COMPRAS c a.id上的dc=dc.id\U关节 左连接 选择dv* 来自B_DETALLE_VENTAS dv 在v.id=dv.id\u文塔上连接B_文塔v dv.id上的dv\u articulo=a.id ...