我目前正在使用3个表,我发现构建一个返回唯一记录集的SQL查询很困难。我正在使用Oracle SQL。
如果我包含UDG_Description字段,我会得到重复的记录。
我尝试在Table1.MachId上使用'distinct',但我认为这是使用它进行查询的错误方法。
我注意到,如果我包含UDG_Description,我会得到重复项,但是我需要表3中关于我想要生成的输出的描述。
如果有人可以帮助我,我感激不尽?
以下是我目前正在使用的当前设置
表1
表2
表3
注意 UDG_CODE不是唯一的。 udg_prefix和udg_id必须是唯一的。
SELECT distinct(MachId), MachCode, MachLinkType, Lev_UDG_Code, UDG_Description
from Table1 INNER JOIN Table2
ON Table1.MachCode = Table2.Lev_MachCode
INNER JOIN Table2 ON
Table3.UDG_Code = Table2.Lev_UDG_Code
WHERE MachLinkType = 'ATX' AND Lev_UDG_Code = '12A89'
亲切的问候,
答案 0 :(得分:1)
您需要在加入之前从table3获取唯一的代码/说明列表。像这样
SELECT MachId,
MachCode,
MachLinkType,
Lev_UDG_Code,
tbl3.UDG_Description
FROM Table1
INNER JOIN Table2 ON Table1.MachCode = Table2.Lev_MachCode
INNER JOIN (SELECT UDG_CODE,
UDG_Description
FROM Table3
GROUP BY UDG_COD,
UDG_Description) tbl3
ON tbl3.UDG_Code = Table2.Lev_UDG_Code
答案 1 :(得分:0)
也许:
select distinct MachId,
MachCode,
MachLinkType,
Lev_UDG_Code,
UDG_Description
from Table1
inner join Table2 on Table1.MachCode = Table2.Lev_MachCode
inner join Table3 on Table3.UDG_Code = Table2.Lev_UDG_Code
where MachLinkType = 'ATX' and Lev_UDG_Code = '12A89'