Запрос отчета Oracle 11g

вот мой запрос, я просто хочу получить ITEM_CATEGORY_NAME из моей таблицы Pr_bom_line_washings, но здесь нет данных из этой таблицы, пожалуйста, проверьте мой код и выделите, что не так.

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

person Khuram Shehzad    schedule 21.02.2020    source источник
comment
Что случилось? Кто знает. Начните с нуля, добавляя таблицу за таблицей в предложение FROM, и посмотрите, какое соединение (или условие) заставляет исчезнуть нужную вам строку. Тогда исправьте то, что не так.   -  person Littlefoot    schedule 21.02.2020
comment
@Littlefoot не получает элементы с этим идентификатором = 677 в отчете, но в таблице есть элементы с этим идентификатором = 677 .. какое соединение неверно и что нужно для нового соединения?   -  person Khuram Shehzad    schedule 21.02.2020
comment
Мне нечего добавить к моему предыдущему комментарию, Хурам.   -  person Littlefoot    schedule 21.02.2020
comment
@Littlefoot хорошо Уважаемый сэр Спасибо   -  person Khuram Shehzad    schedule 21.02.2020


Ответы (1)


Это слишком долго для комментария и может помочь решить вашу проблему. Ваш запрос выбирает ITEM_CATEGORY_NAME из IIC, а не из PBW, и вы говорите, что хотите его из PBW. Также перед выбором стоит запятая ,, поэтому запрос синтаксически неверен, возможно, опечатка при публикации.

Показывайте только те столбцы, которые важны для объединений, измените соединения старого стиля на стандарты ansi, таким образом вы ясно увидите, как работают соединения:

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

Если у вас есть строки с id = 677 в таблице bh и эти строки не отображаются в приведенном выше запросе, это означает, что у них нет совпадений в bl, ssoi или itm. Если вы хотите, чтобы они отображались, измените проблемное соединение на левое соединение.

person Ponder Stibbons    schedule 21.02.2020