0

青色のすべての人物とシャツを表示する結果で、人物をシャツ テーブルに参加させようとしています。

これが私の人です:

ID  NAME
1   Antonio Paz
2   Lilliana Angelovska
3   Michael SpringRoll
4   Poor dude

そしてシャツ:

ID  STYLE   COLOR   OWNER
1   polo    blue    1
2   dress   white   1
3   tshirt  blue    1
4   dress   orange  2
5   polo    red     2
6   dress   blue    2
7   tshirt  white   2
8   dress   orange  3
9   polo    red     3
10  dress   red     3
11  tshirt  white   3

私はすべての人物とすべてのシャツを含む左外部結合を行っています:

SELECT p.name,s.style,s.color FROM person p LEFT OUTER JOIN shirt s
   ON s.owner = p.id

NAME                    STYLE   COLOR
Antonio Paz             polo    blue
Antonio Paz             dress   white
Antonio Paz             t-shirt blue
Lilliana Angelovska     dress   orange
Lilliana Angelovska     polo    red
Lilliana Angelovska     dress   blue
Lilliana Angelovska     t-shirt white
Michael SpringRoll      dress   orange
Michael SpringRoll      polo    red
Michael SpringRoll      dress   red
Michael SpringRoll      t-shirt white
Poor dude               (null)  (null)

青いシャツだけが表示されるようにクエリを制限するにはどうすればよいですか。また、結果が次のようになるように、空の行を持つ人も含めます。

NAME                    STYLE   COLOR
Antonio Paz             polo    blue
Antonio Paz             t-shirt blue
Lilliana Angelovska     dress   blue
Michael SpringRoll      (null)  (null)
Poor dude               (null)  (null)

ここで私の例を実行できます: http://sqlfiddle.com/#!2/1f440/1/0

助けてくれて本当にありがとうございます!

4

1 に答える 1

2

INNER JOINではなくLEFT JOINにする

WHERE の後ではなく、ON 内に s.color = 'blue' を含めます。

すなわち

SELECT p.name,s.style FROM person p LEFT JOIN shirt s
   ON s.owner = p.id AND s.color = 'blue'; 
于 2014-08-20T04:09:47.140 に答える