我需要帮助。我想在SELECT语句中获得一个结果,但我得到两个。我想要的是,如果有问题语言的文字',请回复文字 但 如果在提问语言中没有文本,则返回默认语言文本WHERE'text_id = 1'
textlang
lang_id text_id text
1 1 EnglishText
2 1 SpanishText
my code:
SELECT text FROM textlang Where text_id ='1'
and
CASE lang_id
WHEN 'asked_language' THEN lang_id = 'asked_language'
ELSE lang_id ='default language'
END
如果我选择西班牙语,此代码会同时提供英语和西班牙语文本。我只需要一个结果。 任何的想法? 谢谢!
数据库架构
CREATE TABLE lang(
ID INT NOT NULL auto_increment PRIMARY KEY,
LangCode char 5,
LangName nvarchar(50)
);
CREATE TABLE text(
text_id INT NOT NULL auto_increment PRIMARY KEY
);
CREATE TABLE textlang(
textlang_id INT NOT NULL auto_increment PRIMARY KEY,
lang_id INT,
text_id INT,
text varchar(150),
FOREIGN KEY(lang_id) REFERENCES lang(ID),
FOREIGN KEY(text_id) REFERENCES text(text_id)
);
答案 0 :(得分:0)
您可以尝试COALESCE()
:
SELECT COALESCE(r.text, d.text) AS text
FROM
(SELECT text
FROM textlang
WHERE text_id = 1 AND lang_id = @requestedLanguage) AS r,
(SELECT text
FROM textlang
WHERE text_id = 1 AND lang_id = @defaultLanguage) AS d;
有关它的更多信息here。
我还没有尝试过这样我先写下我的头脑然后先测试它,它可能无法正常工作......