我在mysql数据库中有3个表,名称为Visits,Groups,Carers。
访问可由组或护理人员执行,因此在“访问”表中,我具有字段护理人员模式,如果访问由护理人员执行,则设置为1;如果由组执行访问,则设置为0。

我需要构建一条语句,该语句将检索组名或护理者名称(取决于carer_mode的值)

我意识到以下代码不正确,但可能有助于解释我要实现的逻辑:

SELECT CASE carer_mode
WHEN  '1' THEN (SELECT name FROM carers WHERE Carers.id = Visits.carer_id )
WHEN '0' THEN (SELECT name FROM groups WHERE Groups.id = Visits.carer_id )
END as carer_name
FROM `Visits`


我将感谢对有效代码的任何帮助,这些帮助我实现目标

谢谢

凯文

最佳答案

您的代码似乎很好。这是达到相同结果的另一种方法:

    SELECT g.name
    FROM
        Visits AS v
      JOIN
        Groups AS g
          ON g.id = v.carer_id
    WHERE v.carer_mode = 0
UNION ALL
    SELECT c.name
    FROM
        Visits AS v
      JOIN
        Carers AS c
          ON c.id = v.carer_id
    WHERE v.carer_mode = 1

07-26 08:50
查看更多