这是我的查询,我只是想从我的表Pr_bom_line_washings中获取ITEM_CATEGORY_NAME,但这里没有来自该表的数据,请检查我的代码并突出显示错误之处。
SELECT distinct itm.ITEM_CODE P_Code,
itm.ITEM_DESC P_Desc,
itm.UOM P_UOM,
NVL (ssoi.QTY, 0) qty,
bh.REMARKS,
( NVL (bl.QTY, 0)
* (SELECT NVL (last_grn_rate, 0)
FROM inv_items
WHERE item_id = bl.ITEM_ID))
amount,
NVL (bl.amount, 0) child_amount,
IIC.ITEM_CATEGORY_NAME Mat_Cat,
DECODE (bl.PURCHASING, 'Y', 'Yes', 'N', 'No') Purchase,
bl.ITEM_BY_SIZE,
FROM pr_bom_headers bh,
pr_bom_lines bl,
pr_bom_sub_lines bsl,
sm_Sale_order_items ssoi,
inv_items itm,
Pr_bom_line_washings pbw,
INV_ITEM_CATEGORIES iic
WHERE bh.BOM_HEADER_ID = bl.BOM_HEADER_ID
AND bl.BOM_LINE_ID = bsl.BOM_LINE_ID(+)
AND bh.ITEM_ID = itm.ITEM_ID
AND SSOI.SALE_ORDER_ID = BH.SALE_ORDER_ID
and BH.BOM_HEADER_ID = PBW.BOM_HEADER_ID
and BL.MATERIAL_CAT = IIC.ITEM_CATEGORY_ID(+)
and PBW.MATERIAL_CAT = IIC.ITEM_CATEGORY_ID(+)
and BH.BOM_HEADER_ID= 677
&qr发布于 2020-02-21 19:02:05
这篇评论太长了,可能会帮助你解决问题。您的查询从IIC中选择ITEM_CATEGORY_NAME,而不是从PBW中选择,并且您说您希望从PBW中获取它。此外,select前有一个逗号,,因此查询在语法上是不正确的,可能是发布时的拼写错误。
只显示对joins很重要的列,将旧式joins更改为ansi标准,这样您将清楚地看到joins是如何工作的:
select bh.bom_header_id,
bl.bom_header_id,
ssoi.sale_order_id,
itm.item_id,
bl.material_cat,
iic.item_category_id,
pbw.material_cat,
pbw.item_category_name
from pr_bom_headers bh
join pr_bom_lines bl on bl.bom_header_id = bh.bom_header_id
left join pr_bom_sub_lines bsl on bsl.bom_line_id = bl.bom_line_id
join sm_sale_order_items ssoi on ssoi.sale_order_id = bh.sale_order_id
join inv_items itm on itm.item_id = bh.item_id
left join inv_item_categories iic on iic.item_category_id = bl.material_cat
left join pr_bom_line_washings pbw on pbw.material_cat = iic.item_category_id
where bh.bom_header_id = 677如果表bh中有id = 677的行,而这些行没有出现在上面的查询中,这意味着它们在bl、ssoi或itm中没有匹配项。如果您希望它们出现,请将有问题的join更改为left join。
https://stackoverflow.com/questions/60333445
复制相似问题