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

Откуда:
Сообщений: 165
Приветствую,

Возникли некоторые сложности с запросом...

При запуске процедуры передается параметр в виде строки, содержащий HotelID и разделители.
Далее эта строка парсится в таблицу @t.
Далее эта таблица джоинится с целевой таблицей Table.

Условия выборки: если ID один - допускается выводить строки с хотя бы одним совпадением.
Если ID два и более - выводятся строки у которых два и более совпадений, т.е. N ID = N совпадений.

Вопрос: как реализовать второе условие?

Спасибо!
13 июн 11, 17:16    [10806701]     Ответить | Цитировать Сообщить модератору
 Re: Сложный JOIN  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
whitebeast, ознакомтесь: Рекомендации по оформлению сообщений в форуме. Потому как из написанного вами - нифига не понятно, кроме того что парсите строку с ийдишниками.
13 июн 11, 17:24    [10806732]     Ответить | Цитировать Сообщить модератору
 Re: Сложный JOIN  [new]
whitebeast
Member

Откуда:
Сообщений: 165
kDnZP, с рекомендациями знаком.
Извиняюсь, что не указал версию сервера MS SQL 2005.
Как придумать более понятную тему - увы не знаю.

Добавлю используемый запрос (подходит к первому условию, но не подходит ко второму):
select  * 
from    dbo.Hotel h
join     @tRooms tr
    on  tr.HotelID= р.HotelID

Примеры:
Условие 1:
Строка с HotelID: " 111 "
Таблица Hotel:
ID  HotelID
1   111
1   0
2   123
3   111
Нужны записи с ID 1 и 3

Условие 2:
Строка с HotelID: " 111; 222 "
ID  HotelID
1   111
1   222
2   123
3   111
4   222
Нужна запись с ID 1 ( а не 1,3,4 с моим запросом)

Задам вопрос по другому: как должен выглядеть запрос, чтобы он удовлетворял двум условиям?
13 июн 11, 17:44    [10806789]     Ответить | Цитировать Сообщить модератору
 Re: Сложный JOIN  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
whitebeast, че-то фигово вы рекомендации читаете... Могли бы скрипты самостоятельно подготовить...
Проверяйте:
DECLARE @table TABLE ( id INT, HotelID INT )
INSERT  INTO @table
        ( id ,
          HotelID
        )
        SELECT  1 ,
                111
        UNION ALL
        SELECT  1 ,
                222
        UNION ALL
        SELECT  2 ,
                123
        UNION ALL
        SELECT  3 ,
                111
        UNION ALL
        SELECT  4 ,
                222

DECLARE @flt TABLE ( HotelID INT )
INSERT  INTO @flt
        SELECT  111
        UNION ALL
        SELECT  222

SELECT  t.id
FROM    @table t
        JOIN @flt f ON t.HotelID = f.HotelID
GROUP BY t.id
HAVING (SELECT COUNT(*) FROM @flt)=COUNT(t.id)
13 июн 11, 18:55    [10806945]     Ответить | Цитировать Сообщить модератору
 Re: Сложный JOIN  [new]
whitebeast
Member

Откуда:
Сообщений: 165
kDnZP, все оказалось намного проще чем я ожидал! Спасибо!

Впредь постараюсь следовать рекомендациям.
13 июн 11, 19:00    [10806957]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить