解决问题,这就是你要求我们做的。在测试SQL中,不断删除这些表、联接、筛选器和所选列,直到有可能最小的SQL语句仍然存在问题。那么也许我们可以“以貌取人”。你的查询工作完美无瑕。但您还提到“如果我只需要每个项目一次,我应该使用EXISTS(半联接)来过滤行
解决问题,这就是你要求我们做的。在测试SQL中,不断删除这些表、联接、筛选器和所选列,直到有可能最小的SQL语句仍然存在问题。那么也许我们可以“以貌取人”。你的查询工作完美无瑕。但您还提到“如果我只需要每个项目一次,我应该使用EXISTS(半联接)来过滤行,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,解决问题,这就是你要求我们做的。在测试SQL中,不断删除这些表、联接、筛选器和所选列,直到有可能最小的SQL语句仍然存在问题。那么也许我们可以“以貌取人”。你的查询工作完美无瑕。但您还提到“如果我只需要每个项目一次,我应该使用EXISTS(半联接)来过滤行,而不是实际联接到WIP\u离散作业。\u V。”您能再解释一下吗?此外,我了解使用表单视图的长期影响,并按照您的建议将视图表替换为基表。再次感谢。我给你的查询是一个如何使用EXISTS/semi-join筛选项目的示例EXISTS只是返回TR
解决问题,这就是你要求我们做的。在测试SQL中,不断删除这些表、联接、筛选器和所选列,直到有可能最小的SQL语句仍然存在问题。那么也许我们可以“以貌取人”。你的查询工作完美无瑕。但您还提到“如果我只需要每个项目一次,我应该使用EXISTS(半联接)来过滤行,而不是实际联接到WIP\u离散作业。\u V。”您能再解释一下吗?此外,我了解使用表单视图的长期影响,并按照您的建议将视图表替换为基表。再次感谢。我给你的查询是一个如何使用
EXISTS
/semi-join筛选项目的示例<如果(通常相关的)子查询返回任何行,则code>EXISTS只是返回TRUE
的表达式。看,即使我得到了唯一的记录,我似乎仍然无法获取每个项目的所有组件。我正在尝试从BOM\u库存\u组件中选择组件\u项目\u ID。我将此列连接到MTL\U SYSTEM\U ITEMS\B表的库存\U ITEM\U ID。它为每个项目返回Null或不完整的数据。这或多或少是正确的联接(您还需要以某种方式限制MTL\u系统\u项目。组织\u ID
)。我不知道什么是null
或“不完整”。我建议您在单独的问题中发布您的查询和最新问题。我已在单独的主题中发布了最新查询。你能看一下吗?你的查询完美无瑕。但您还提到“如果我只需要每个项目一次,我应该使用EXISTS(半联接)来过滤行,而不是实际联接到WIP\u离散作业。\u V。”您能再解释一下吗?此外,我了解使用表单视图的长期影响,并按照您的建议将视图表替换为基表。再次感谢。我给你的查询是一个如何使用EXISTS
/semi-join筛选项目的示例<如果(通常相关的)子查询返回任何行,则code>EXISTS只是返回TRUE
的表达式。看,即使我得到了唯一的记录,我似乎仍然无法获取每个项目的所有组件。我正在尝试从BOM\u库存\u组件中选择组件\u项目\u ID。我将此列连接到MTL\U SYSTEM\U ITEMS\B表的库存\U ITEM\U ID。它为每个项目返回Null或不完整的数据。这或多或少是正确的联接(您还需要以某种方式限制MTL\u系统\u项目。组织\u ID
)。我不知道什么是null
或“不完整”。我建议您在单独的问题中发布您的查询和最新问题。我已在单独的主题中发布了最新查询。你能看看吗?
SELECT *
FROM BOM_BILL_OF_MATERIALS BOM,
BOM_INVENTORY_COMPONENTS BIC,
BOM_COMPONENTS_B BCB,
BOM_OPERATIONAL_ROUTINGS_V BORV,
BOM_OPERATION_SEQUENCES_V BOSV,
BOM_STRUCTURES_B BSB,
BOM_STRUCTURE_TYPES_B BST,
MTL_SYSTEM_ITEMS_B MSI,
MTL_SYSTEM_ITEMS_TL MSIT,
ORG_ORGANIZATION_DEFINITIONS OOD,
WIP_DISCRETE_JOBS_V WDJV
WHERE BOM.BILL_SEQUENCE_ID = BIC.BILL_SEQUENCE_ID
AND BIC.COMPONENT_SEQUENCE_ID = BCB.COMPONENT_SEQUENCE_ID
AND BCB.BILL_SEQUENCE_ID = BSB.BILL_SEQUENCE_ID
AND BOM.STRUCTURE_TYPE_ID = BST.STRUCTURE_TYPE_ID
AND BOM.ASSEMBLY_ITEM_ID = MSI.INVENTORY_ITEM_ID
AND BOM.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND BOSV.ROUTING_SEQUENCE_ID = BORV.ROUTING_SEQUENCE_ID
AND BORV.ASSEMBLY_ITEM_ID = BOM.ASSEMBLY_ITEM_ID
AND BORV.ORGANIZATION_ID = BOM.ORGANIZATION_ID
AND MSI.INVENTORY_ITEM_ID = MSIT.INVENTORY_ITEM_ID
AND MSI.ORGANIZATION_ID = MSIT.ORGANIZATION_ID
AND MSIT.ORGANIZATION_ID = OOD.ORGANIZATION_ID
AND MSIT.LANGUAGE = USERENV('LANG')
AND sysdate BETWEEN BCB.EFFECTIVITY_DATE AND NVL(BCB.DISABLE_DATE, sysdate)
AND MSI.BOM_ENABLED_FLAG = 'Y'
AND NVL(MSI.ENABLED_FLAG,'X') ='Y'
AND OOD.ORGANIZATION_ID IN (203,204,328)
AND BORV.COMMON_ROUTING_SEQUENCE_ID = WDJV.COMMON_ROUTING_SEQUENCE_ID
AND BORV.ASSEMBLY_ITEM_ID = WDJV.PRIMARY_ITEM_ID
AND WDJV.CREATION_DATE > ADD_MONTHS( sysdate, -12*3 )
AND WDJV.WIP_ENTITY_NAME = '28799'
--and MSI.SEGMENT1='9064090'
SELECT *
FROM bom_bill_of_materials bom,
bom_inventory_components bic,
bom_components_b bcb,
bom_operational_routings_v borv,
bom_operation_sequences_v bosv,
bom_structures_b bsb,
bom_structure_types_b bst,
mtl_system_items_b msi,
mtl_system_items_tl msit,
org_organization_definitions ood --,
--wip_discrete_jobs_v wdjv
WHERE bom.bill_sequence_id = bic.bill_sequence_id
AND bic.component_sequence_id = bcb.component_sequence_id
AND bcb.bill_sequence_id = bsb.bill_sequence_id
AND bom.structure_type_id = bst.structure_type_id
AND bom.assembly_item_id = msi.inventory_item_id
AND bom.organization_id = msi.organization_id
AND bosv.routing_sequence_id = borv.routing_sequence_id
AND borv.assembly_item_id = bom.assembly_item_id
AND borv.organization_id = bom.organization_id
AND msi.inventory_item_id = msit.inventory_item_id
AND msi.organization_id = msit.organization_id
AND msit.organization_id = ood.organization_id
AND msit.language = USERENV ('LANG')
AND SYSDATE BETWEEN bcb.effectivity_date AND NVL (bcb.disable_date, SYSDATE)
AND msi.bom_enabled_flag = 'Y'
AND NVL (msi.enabled_flag, 'X') = 'Y'
AND ood.organization_id IN (203, 204, 328)
--AND borv.common_routing_sequence_id = wdjv.common_routing_sequence_id
--AND borv.assembly_item_id = wdjv.primary_item_id
--AND wdjv.creation_date > ADD_MONTHS (SYSDATE, -12 * 3)
--AND wdjv.wip_entity_name = '28799'
AND EXISTS ( SELECT 'discrete job within the last 3 years'
FROM wip_discrete_jobs_v wdjv
WHERE wdjv.common_routing_sequence_id = borv.common_routing_sequence_id
AND wdjv.primary_item_id = borv.assembly_item_id
AND wdjv.creation_date >= ADD_MONTHS(SYSDATE, -12*3)
)
--and MSI.SEGMENT1='9064090'