SQL案例|如果则

SQL案例|如果则,sql,if-statement,join,select,case,Sql,If Statement,Join,Select,Case,我想根据用户语言德语或英语从表中选择一个值。我知道我可以稍后在PHP if/else中进行选择,但我想尝试一下,如果我已经可以在SQL查询中进行选择的话。在SQL案例的文档中,我没有看到满足我需求的示例或解决方案。我不确定这是否可能。如我所见,当时只接受“文本”,而不接受新的SQL查询 我的SQL查询 $statement=$pdo->prepareSELECT audit.id作为audit\u id, 审计问卷, 审计。指定的审计人员, audit.co_auditor_1_id, audi

我想根据用户语言德语或英语从表中选择一个值。我知道我可以稍后在PHP if/else中进行选择,但我想尝试一下,如果我已经可以在SQL查询中进行选择的话。在SQL案例的文档中,我没有看到满足我需求的示例或解决方案。我不确定这是否可能。如我所见,当时只接受“文本”,而不接受新的SQL查询

我的SQL查询

$statement=$pdo->prepareSELECT audit.id作为audit\u id, 审计问卷, 审计。指定的审计人员, audit.co_auditor_1_id, audit.co_auditor_2_id, 审计。你的意见是肯定的, 审计意见(否定),, 审计意见(综述), 审计。一般审计状况, 审计问卷, audit.audit\u日期\u开始, 审计。审计日期结束, 审计,审计,原因, 审核。审核的过程, 审计领域, 部门名称, 地点,, 供应商。供应商名称, 供应商。供应商所在国, 供应商,供应商,城市, users.vorname, users.nachname, 用户邮箱:, 问卷调查方案, questionaire.quest_name,//德语翻译 questionaire.quest\u name\u en//英译 来自审计 左加入供应商 审核时,供应商\供应商id=供应商id 左加入用户 在审核时,supplier\u uid=users.id 左加入部门 ON audit.department=departments.id 加入问卷 关于audit.questionaire\u id=questionaire.id 其中audit.id=$id; $result=$statement->executearray':id'=>$\u GET['id']; $audit=$statement->fetch; 在这里,我想实现这样一个SQL案例:

我的尝试:

... 以前的事情。。。 问卷调查方案, CASE users.language='de'然后 从问卷中选择任务名称,其中id=audit.questionaire\u id 否则,从问询单中选择任务名称,其中id=audit.questionaire\u id 来自审计 ... 之后的事情。。。
不需要像查询已经将必要的表连接在一起那样复杂。 所以不是

CASE users.language = 'de' THEN
(SELECT quest_name FROM questionaire WHERE id = audit.questionaire_id)
ELSE (SELECT quest_name_en FROM questionaire WHERE id = audit.questionaire_id)
使用

这就是我所知道的用于Oracle或SQL Server的SQL。在这种情况下,您可以检查多个类型,因为条件在WHEN子句中

另类

CASE users.language
  WHEN 'de' THEN quest_name 
  ELSE quest_name_en 
END

在这种情况下,类型是由CASE预先设置的,因此WHEN只能针对同一类型进行计算。与本例类似,仅针对字符串。

请提供示例数据和所需结果。您的查询引用了未定义的审核。没有理由在SQL中这样做。您已经定义了表和列-只需在应用程序代码中定义即可。您可以将您的案例语句简化为案例用户。语言当“de”然后“quest”\u name\u de ELSE quest\u name\u en结束为quest\u name-不需要选择子查询,因为您已经加入了问卷表。我已经为您的应用程序添加了我的原始查询理解和我下面的想法。按照语法要求,将WHEN放在CASE后面,并将END放在最后一个结束括号后面。
CASE users.language
  WHEN 'de' THEN quest_name 
  ELSE quest_name_en 
END