我在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