【发布时间】:2018-01-17 11:27:43
【问题描述】:
我对 SQL 还很陌生,以前也做过一些连接,但没有这么复杂。
基本上,我要做的是将许多表连接在一起以显示报告的整体数据。主表g,是我想查看详细程度的地方。 g 与附加到它的所有表具有一对多关系。 GROUP BY 会消除这些重复项吗?
我尝试过使用SELECT DISTINCT,但我不确定这是否是最佳解决方案。
这是我当前正在运行的 SQL 的输出ORA-00904: "a"."akey": invalid identifier。
SELECT
a.afield123 ORDER_QTY,
b.bfield123 MANUF,
c.cfield123 ORDER_DATE,
d.dfield123 PATIENT_CREATE_DATE,
e.efield123 PAYOR_CLASS,
f.ffield123 ID
FROM
schema123.a12345 a,
schema123.b12345 b,
schema123.c12345 c,
schema123.d12345 d,
schema123.e12345 e,
schema123.f12345 f,
LEFT JOIN schema123.g12345 g ON
(a.akey = b.akey AND
c.ckey = d.ckey AND
e.ekey = f.ekey)
这是一些示例数据
G 表(主表)
Primary Key: gfield123
Foreign Keys: akey,bkey,ckey,dkey,ekey,fkey,hkey
gfield123 gfield124 akey bkey ckey dkey ekey fkey hkey
1 8/1/2017 1234 2234 3234 4234 5234 6234 7234
一张桌子
Primary Key: akey
Foreign Keys: gfield123, bkey
akey afield123 gfield123 bkey
1234 20 1 2234
1235 40 1 2234
B 表
Primary Key: bkey
Foreign Keys: gfield123, ckey, akey
bkey bfield123 gfield123 akey ckey
2234 COMPANY1 1 1234 3234
C 表
Primary Key: ckey
Foreign Keys: gfield123, bkey, dkey
ckey cfield123 gfield123 bkey dkey
3234 8/5/2017 1 2234 4234
D 表
Primary Key: dkey
Foreign Keys: gfield123, ckey, ekey
dkey dfield123 gfield123 ckey ekey
4234 7/1/2017 1 3234 5234
E 表
Primary Key: ekey
Foreign Keys: gfield123, fkey
ekey efield123 gfield123 fkey
5234 MEDICARE 1 6234
F 表
Primary Key: fkey
Foreign Key: gfield123
fkey ffield123 gfield123
6234 ABC123 1
H 表
Primary Key: hkey
hkey hfield123
7234 9999
预期结果
gfield123 afield123 bfield123 cfield123 efield123 ffield123 hfield123
1 60 COMPANY1 8/5/2017 MEDICARE ABC123 9999
编辑:SQL 简化、数据样本、预期结果
【问题讨论】:
-
"这是一大段代码。" “我们需要一个更大的调试器。”
-
不要将 ANSI 连接与旧式 Oracle 语法混用;在您的第一个版本中,将
from子句中所有以逗号分隔的表重写为具有合适的on子句的正确(内部)join语句。这种混合可能是为什么PAY在您期望的地方不可见,但是对于人们和优化器来说,这种混合会变得混乱和混乱。 -
你能提供一个
SCHEMANAME.BT_PAYOR PAY,的例子吗?我不熟悉 ANSI 和旧式 Oracle 之间的区别。 -
伙计,简化。了解How to create a Minimal, Complete, and Verifiable example。我对你的问题投了反对票,因为除了你之外别无他法。
-
@AnthonyKnisely 相信我,你不想在 cmets 中就本网站的目的进行辩论。查看 MCVE 链接,了解为什么这个问题对您来说很难获得帮助。
标签: sql oracle duplicates left-join