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

Откуда:
Сообщений: 35
Есть таблица

create table Table (
ID int identity(1,1) primary key,
f1 int
)


есть значения

insert into Table values (1)
insert into Table values (2)
insert into Table values (3)
insert into Table values (4)
insert into Table values (5)
insert into Table values (6)
insert into Table values (7)
insert into Table values (8)
insert into Table values (9)
insert into Table values (10)
insert into Table values (11)

Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице, то их селектим.
Как вытащить эти строки?
Например, знаем, что 1 не может быть вместе с 6. Отображаем все строки с значениями 1 и 6.

Задачу нужно решить подзапросом. Таких пар может быть несколько.
10 сен 13, 22:33    [14822946]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Aleksey Lomov
Есть таблица
Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице, то их селектим.


А где-то есть другие таблицы?
10 сен 13, 22:51    [14822994]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Aleksey Lomov
Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице
Это как понимать, если таблица одна-одинёшенька, и в ней только одно поле значений?!
10 сен 13, 22:53    [14822999]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
Aleksey Lomov
Member

Откуда:
Сообщений: 35
вообще, в запросе другие присоединенные таблицы есть. Но мне, в качестве примера, нужно решить задачу с одной, по которой нужно пройтись и вытащить ID этих строк (которые по условию)
10 сен 13, 22:55    [14823009]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
Aleksey Lomov
Member

Откуда:
Сообщений: 35
iap
Aleksey Lomov
Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице
Это как понимать, если таблица одна-одинёшенька, и в ней только одно поле значений?!


это для примера, все равно адаптировать. нужен сам алгоритм
10 сен 13, 22:57    [14823017]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
Aleksey Lomov
Member

Откуда:
Сообщений: 35
сама задача, для представления: больница. По регламенту, пациенту не может быть оказан в один день первичный и повторный прием. Выбрать нужно все строки, где есть первичный и повторный прием пациента за один день.
10 сен 13, 23:02    [14823032]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
qwerty112
Guest
Aleksey Lomov
Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице, то их селектим.
Как вытащить эти строки?.

это чтоле ?
select * from Table 
where (f1 in (1,6)  and (select count(distinct f1) from Table where f1 in (1,6))=2)
   or (f1 in (8,11) and (select count(distinct f1) from Table where f1 in (8,11))=2)
10 сен 13, 23:06    [14823049]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Aleksey Lomov,

И где в приведенной модели данных сущности "пациент на приеме" и "тип приема"? Ваша табличка ну никак не отражает суть происходящего. Вы напрасно пытаетесь "упростить" задачу.
10 сен 13, 23:09    [14823059]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
Aleksey Lomov
Member

Откуда:
Сообщений: 35
qwerty112
Aleksey Lomov
Имеем условие: если пары 1 и 6 или 8 и 11 есть в одной таблице, то их селектим.
Как вытащить эти строки?.

это чтоле ?
select * from Table 
where (f1 in (1,6)  and (select count(distinct f1) from Table where f1 in (1,6))=2)
   or (f1 in (8,11) and (select count(distinct f1) from Table where f1 in (8,11))=2)


Да! Оно, то что нужно. Спасибо
10 сен 13, 23:34    [14823126]     Ответить | Цитировать Сообщить модератору
 Re: SELECT взаимоисключающих строк  [new]
Aleksey Lomov
Member

Откуда:
Сообщений: 35
pkarklin
Aleksey Lomov,

И где в приведенной модели данных сущности "пациент на приеме" и "тип приема"? Ваша табличка ну никак не отражает суть происходящего. Вы напрасно пытаетесь "упростить" задачу.


я уже понял, что зря это написал )
10 сен 13, 23:40    [14823146]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить