私は 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 を使用することはまったく許可されていません。代わりに実際に何をすべきですか?