Case-Когда таблица заказа была столбцом ссылки на разные opt-put - PullRequest
0 голосов
/ 06 июня 2019

У нас есть Order таблица. Столбец Object_Id в является ключом для идентификатора организации или отдельного идентификатора. Столбец object_name в таблице Order указывает, является ли Object_id организацией или контактом.

Я ищу запрос данных, чтобы я мог вывести Organisation.name или имя контакта (concat(contact.forname, " ", contact.surname)), где это применимо.

Я считаю, что для этого мне нужно заявление Case. Ниже приведен SQL-код, с которым я тестировал:

select 
  object_name,
  object_id
  case when Order.object_name = 'contact' 
    then Order.object_id = Contact.id
  else Order.object_name ='organisation' 
    then Order.object_id = Organisation.name 
  end as object_test,
from Order    
  join Contact on Order.object_id = Contact.id
  join Organisation on Order.object_id = Organisation.id

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Вы были почти там.Когда Order.object_name ='contact' вы можете просто использовать concat(contact.forname, " ", contact.surname).После then вы можете просто указать, какой движок SQL должен выбрать.

select 
  object_name,
  object_id,
  case 
    when Order.object_name = 'contact' then concat(contact.forname, " ", contact.surname)
    when Order.object_name ='organisation' then  Organisation.name 
  end as object_test
from Order    
  join Contact on Order.object_id = Contact.id
  join Organisation on Order.object_id = Organisation.id
0 голосов
/ 06 июня 2019

У вас есть некоторые проблемы с синтаксисом в вашем коде.Должно быть что-то вроде:

select 
object_name,
object_id,

 case when Order.object_name ='contact' then Contact.id
    when Order.object_name ='organisation' then Organisation.name 
else 'default_value' end as object_test,

    from Order

    join Contact on Order.object_id = Contact.id
    join Organisation on Order.object_id = Organisation.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...