MySQL условные запросы - PullRequest
       10

MySQL условные запросы

0 голосов
/ 13 сентября 2011

У меня есть 3 таблицы в базе данных mysql с именами Visits, Groups, Carers.Визит может быть выполнен группой или сиделкой, поэтому в Visit таблице у меня есть режим поле опекуна, устанавливается в 1, если визит exectuted с помощью воспитателя и установить на 0, если выполняется группой.

1002* Мне нужно создать оператор, который будет извлекать либо имя группы, либо имя опекуна (в зависимости от значения 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`

Буду признателен за любую помощь в действующем коде, которая поможет мне в достижении моей цели

спасибо

Кевин

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Ваш код выглядит нормально. Вот еще один способ добиться того же результата:

    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
0 голосов
/ 13 сентября 2011

Я думаю, что это будет работать:

  select 
  case carer_mode when '1' then c.name 
  else g.name end as carer_name 
  from Carer c 
  left join Visits v on v.carer_id=c.carer_id 
  left join Groups g on g.carer_id=c.carer_id 
...