фильтрация выбора результатов - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 3 таблицы клиентов с идентификатором int (pk), parent_id int, текстом имени Сайты с идентификатором int (pk), parent_id int, текстом имени и контактом с идентификатором int (pk), parent_id int, именем name и site_id int

Сайты связаны с клиентами через parent_id. Контакты связаны с клиентами через parent_id

. Некоторые контакты также привязаны к одному сайту (site_id в качестве значения), некоторые не имеют значения в этом. поле, означающее, что они могут видеть все сайты

Моя цель - с помощью одного списка запросов сайта, к которому прикреплен контакт, или всех сайтов, прикрепленных к клиенту

Я придумал

Select sites.* from sites 
     join clients on sites.parent_d = clients.id
     join contacts on contacts.parent_id = clients.id
     where contacts.name = 'the name'
     and case when contacts.site_id is null then true
       else contacts.site_id is not null then cn.site_id = s.id
      end

этот запрос возвращает правильные результаты, но мне интересно, есть ли более чистый способ достижения моей цели

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...