我在连接 Oracle r12 表的表时遇到问题。我尝试过类似的事情..
SELECT
part.party_name,
custA.account_number,
headAll.cust_po_number,
headAll.order_number,
trans.NAME,
headAll.ordered_date,
sales.person_name,
headAll.flow_status_code,
items.segment1,
lineAll.ordered_quantity,
lineAll.order_quantity_uom,
lineAll.unit_selling_price,
lineAll.tax_code
FROM
oe_order_headers_all headAll,
oe_order_lines_all lineAll,
hz_cust_accounts custA,
hz_parties part,
oe_transaction_types_tl trans,
hz_person_profiles sales,
mtl_system_items_b items
WHERE
headAll.Header_ID = lineAll.Header_ID
AND custA.Application_ID = part.Application_ID
AND custA.Application_ID = sales.Application_ID
AND items.inventory_item_id = lineAll.inventory_item_id;
它正在运行,但我知道它是错误的,因为它正在乘以表。 Oracle 中的 r12 表以及结合此示例 r12 表有什么想法吗?
-oe_order_headers_all
-oe_order_lines_all
-hz_cust_accounts
-hz_parties
-oe_transaction_types_tl
-hz_person_profiles
-mtl_system_items_b
我尝试过这个..
更新:
from oe_order_headers_all headAll
INNER JOIN
oe_order_lines_all lineAll
ON headAll.Header_ID = lineAll.Header_ID
INNER JOIN
hz_cust_accounts custA
ON headAll.sold_to_org_id = custA.cust_account_id
INNER JOIN
hz_parties part
ON custA.party_id = part.party_id
INNER JOIN
oe_transaction_types_tl trans
ON headAll.order_type_id = trans.transaction_type_id
INNER JOIN
hz_person_profiles sales
ON part.party_id = sales.party_id
INNER JOIN
mtl_system_items_b items
ON items.inventory_item_id = lineAll.inventory_item_id
我尝试了Where子句
where headAll.Header_ID = lineAll.Header_ID AND headAll.order_type_id = trans.transaction_type_id AND custA.party_id = part.party_id
AND part.party_id = sales.party_id AND headAll.sold_to_org_id = custA.cust_account_id AND items.inventory_item_id = lineAll.inventory_item_id;
仍在增加..
最佳答案
忘掉 Oracle R12 套件吧。一般来说,任何 Oracle 引擎都会有这样的行为。 让我向您展示一些例子。
TABLE A
- COL1 PK1
- COL2 PK1
- COL3
TABLE B
- COL4 PK2
- COL5 PK2
- COL6
TABLE C
- COL7
- COL8 -PK3
- COL9 -PK3
在此模型中,每当我们连接任何表时,除非您通过其键组合进行连接,或者基于对于任何给定行,您最多从另一个表中检索一行的规则。
SELECT A.COL1
FROM TABLEA, TABLEB
WHERE COL1 = COL4
AND COL2 = COL5;
ANSI 语法中的 OR
SELECT A.COL1
FROM TABLEA
JOIN TABLEB ON COL1 = COL4 AND COL2 = COL5;
所以这可以在第三个表上扩展。
SELECT A.COL1
FROM TABLEA, TABLEB, TABLEC
WHERE COL1 = COL4
AND COL2 = COL5
AND COL1 = COL8
AND COL2 = COL9;
PS:假设两个表上的组合主键将始终为另一行提供一行。
您需要扩展 ON 子句以包含一个条件,以便对于表 A 中的每个条目,表 B 中只有一个条目与该条件匹配,并且对于表 B 中的每个条目,表 C 中只有一个条目
您始终可以尝试将表一个接一个地连接起来,并保持查询构建,直到并且除非您确实违反了拇指规则(如上所述)。
如果我在执行相同操作时更改连接条件并且任何表重复,则相同的操作将传播到后续连接。
关于oracle - 提取不同字段和表 ORACLE R12 TABLES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22088218/