【发布时间】:2012-05-25 17:00:51
【问题描述】:
我使用的是 Oracle SQL,所以外连接有很好的 (+) 语法。我应该警告你,我不允许重新设计数据库;我为一家大型组织工作。
以下是一些示例表:
People
PersonID Name
1 Elmo
2 Oscar
3 Chris
Attribute
PersonID Attribute
1 Happy
1 Muppet
1 Popular
2 Grouchy
2 Muppet
2 Popular
3 Programmer
我想要一份人员名单,我想知道我们是否知道他们是快乐的还是不高兴的。以下是我想要的输出:
Name Mood
Elmo Happy
Oscar Grouchy
Chris
所以这是我认为我会使用的查询:
SELECT p.Name, a.Attribute
FROM People p, Attributes a
WHERE p.PersonID = a.PersonID (+)
AND ( a.Attribute (+) = 'Happy'
OR a.Attribute (+) = 'Grouchy' )
(也许我必须输入“OR a.Attribute IS NULL”之类的东西。)
但实际上我根本不允许在外连接中使用 OR!我应该怎么做呢?
【问题讨论】:
-
您的查询对我来说效果很好:sqlfiddle.com/#!4/14c50/1
-
@mellamokb 这太棒了,但也许这与我使用的版本不同。这是我的错误:异常:DBD,ORA-01719:OR 或 IN 的操作数中不允许外连接运算符 (+) 状态:N/A
标签: sql oracle outer-join