1

由于我在另一个线程中问错并且得到了正确回答,因此我开始了一个新线程......

我有两张桌子

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

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

(链接中的 SQL 小提琴: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

如果不存在对应的记录,Left Outer Join 在第二个表中提供空值。

显然将 '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 回答