1

別のスレッドで間違った質問をして正解だったので、代わりに新しいスレッドを開始します..

私は2つのテーブルを持っています

Records
id  |  type
------------
1   |  CD
2   |  CD

Titles
record_id  |  name     |  language
-------------------------------
1          |  Warning  |  'en'
1          |  Achtung  |  'de'
2          | Ambulance |  'en'

(リンクの SQL Fiddle: http://www.sqlfiddle.com/#!2/403d4/1 )

言語「en」をリクエストした場合:

1  |  Warning
2  |  Ambulance

もし私が「de」を求めるなら、私は欲しい

1  |  ACHTUNG
2  |  NULL

この結果を取得するための SQL の書き方を教えてください。

4

2 に答える 2

1

http://www.sqlfiddle.com/#!2/403d4/89

SELECT rec.id, title.name
FROM Records rec
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='de';

SELECT rec.id, title.name
FROM Records rec
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='en';


ID  NAME
1   ACHTUNG
2   (null)

ID  NAME
1   Warning
2   Ambulance
于 2012-11-11T20:27:39.213 に答える
0

左外部結合は、対応するレコードが存在しない場合、2 番目のテーブルに null 値を提供します。

明らかに「en」を「de」に変更して、他の結果を確認します。

Select
  r.id,
  t.name
From
  Records r
    Left Outer Join
  Titles t
    On r.id = t.record_id
Where
  r.language = 'en'
于 2012-11-11T20:26:46.490 に答える