Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как доработать запросик  [new]
nerv
Member

Откуда:
Сообщений: 734
Есть справочник специальностей specialization и спраовчник связей специальность-вредность VredSpec.
В последней таблице два поля Specialization_id и Vrednosti_id

Необходимо при выборе конкретного Vrednosti_id отображать всегда полный справочник Specialization и для тех Specialization_id, которые есть в справочнике VredSpec.


select sp.specialization_id , sp.Name, vs.Vrednosti_id, vs.zvezd(поля из таблицы VredSpec) 
 from Specialization sp left  JOIN VredSpec vs
 ON sp.Specialization_id = vs.Specialization_id
  where Vrednosti_id = 4 or Vrednosti_id is null


Вот что-то подобное, но оно работает не корректно. То есть если во VredSpec есть записи с Vrednosti_id <> 4, то такие Specialization_id в выборку не попадут
5 окт 12, 22:23    [13276637]     Ответить | Цитировать Сообщить модератору
 Re: как доработать запросик  [new]
nerv
Member

Откуда:
Сообщений: 734
Через Union работает:
select sp.specialization_id , sp.Name, vs.Vrednosti_id, vs.zvezd ,
 (case  when vs.Specialization_id is NULL then 0 else 1 end) AS Used
 from Specialization sp left  JOIN VredSpec vs
 ON sp.Specialization_id = vs.Specialization_id
  where Vrednosti_id = 4 
  UNION
  select sp.specialization_id , sp.Name, null, null ,
 null
  from Specialization sp 
  where sp.Specialization_id not in (select vs.specialization_id
    from VredSpec vs
     where vs.Vrednosti_id = 4)


Но наверное можно как то проще написать.
5 окт 12, 22:32    [13276669]     Ответить | Цитировать Сообщить модератору
 Re: как доработать запросик  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
select
 sp.specialization_id , sp.Name, vs.Vrednosti_id, vs.zvezd
from
 Specialization sp left JOIN
 VredSpec vs ON sp.Specialization_id = vs.Specialization_id and vs.Vrednosti_id = 4;
5 окт 12, 22:53    [13276751]     Ответить | Цитировать Сообщить модератору
 Re: как доработать запросик  [new]
nerv
Member

Откуда:
Сообщений: 734
ух ты, гениально! не знал, что в on можно еще и условия через and добавлять.
Спасибо огромное.
5 окт 12, 22:55    [13276764]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить