我正在学习更多SQL,并遇到了“问题”,
我有两个表格,如下面的链接 http://www.sqlfiddle.com/#!2/403d4/1
编辑: 由于我在本周末所做的所有SQL测试中都很迟钝,所以我说错了...... 对不起伙计......
我真正想要的是:
如果我有所要求的语言,我想获得所有记录,如果请求的语言不在titles-table中,我希望它说“”或null ...
如果我要求'de'中的所有记录,我想要:1 | ACHTUNG
2 | NULL
如果我要求'en'中的所有记录
1 | WARNING
2 | Ambulance
对于错误的问题真的很抱歉。
/ * 我想做的事: 我有记录的ID和所要求的语言。 如果所选语言不存在,我希望它采用其他语言。
如果我有: language ='de'和id = 1 我想'ACHTUNG',如果我有: language ='de'和id = 2 我想要“救护车”,因为没有'de'...... * /
我该怎么做?
答案 0 :(得分: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
答案 1 :(得分:0)
您可以应用自定义订单,只返回第一行,如下所示:
SELECT
rec.id,
title.language,
title.name
FROM Records rec
LEFT JOIN Titles title
ON title.record_id = rec.id
WHERE rec.id = 1
ORDER BY Field(title.language, "de") DESC
LIMIT 1
此查询首先返回包含所需语言的记录(如果存在)。如果没有,它将只返回找到的内容。您可能需要查看at this answer。