我有加入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 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;
仍在倍增..
答案 0 :(得分:2)
忘了拥有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中只有一个条目
您可以随时尝试逐个连接表并保持查询构建,直到并且除非您违反了拇指规则(如上所述)。
如果我在执行相同的条件时更改了连接条件并且任何表重复,则相同的内容将传播到后续连接。
答案 1 :(得分:0)
表之间没有任何关系。别名 trans 根本不相关, headAll,lineAll,items 和 custA,part,sales 组分开。在这种情况下,行将使用默认cross join加入。
在WHERE子句中添加条件:
AND headAll.order_type_id = trans.transaction_type_id
AND headAll.sold_to_org_id = custA.cust_account_id
请参阅Oracle教程中的此示例:Query to get the OM Sales Order summary details