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

Откуда:
Сообщений: 274
имеется таблица

create table kreditBB (sch varchar(20),dlid numeric (15,0))
insert into kreditBB (sch,dlid) values ('47427-15',100001)
insert into kreditBB (sch,dlid) values ('47427-20',100002)
insert into kreditBB (sch,dlid) values ('47427-10',100003)
insert into kreditBB (sch,dlid) values ('61301-70',100002)
insert into kreditBB (sch,dlid) values ('61301-80',100001)
insert into kreditBB (sch,dlid) values ('61301-22',100003)


Как введя в поле запроса значение sch = 47427-15 получить значение sch 61301-80 (т.е. где dlid=100001)

Заранее благодарю за советы!
19 мар 13, 15:54    [14068127]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Как-то так:

if object_id('tempdb.dbo.#kreditBB') is not null
    drop table #kreditBB
    
create table #kreditBB (sch varchar(20),dlid numeric (15,0))

insert into #kreditBB (sch,dlid) values ('47427-15',100001)
insert into #kreditBB (sch,dlid) values ('47427-20',100002)
insert into #kreditBB (sch,dlid) values ('47427-10',100003)
insert into #kreditBB (sch,dlid) values ('61301-70',100002)
insert into #kreditBB (sch,dlid) values ('61301-80',100001)
insert into #kreditBB (sch,dlid) values ('61301-22',100003)

declare
    @sch varchar (20)   = '47427-15'
    
select
    *
from    #kreditBB   a
where
    a.dlid in (
        select
            x.dlid
        from    #kreditBB    x
        where
            x.sch = @sch
    )
    and a.sch != @sch
19 мар 13, 15:59    [14068158]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Извиняюсь за недостаточность входных данных!

В реальности таблица kreditBB это результат выполнения довольно-таки "тяжелого" запроса. В принципе можно сначала узнать dlid, а затем по маске '613%' выбрать sch с таким dlid. Но хотелось включить какие-то доп условия в этот "тяжелый" запрос.
19 мар 13, 16:05    [14068218]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Евгенич
Извиняюсь за недостаточность входных данных!

В реальности таблица kreditBB это результат выполнения довольно-таки "тяжелого" запроса. В принципе можно сначала узнать dlid, а затем по маске '613%' выбрать sch с таким dlid. Но хотелось включить какие-то доп условия в этот "тяжелый" запрос.
Включайте, мы не против.
19 мар 13, 16:06    [14068227]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Гавриленко Сергей Алексеевич, в этом то вся и проблема, что не знаю какие условия-оганичения включить в запрос чтобы в результате осталась лишь строка со sch = '61301-80'
19 мар 13, 16:09    [14068255]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Евгенич
Гавриленко Сергей Алексеевич, в этом то вся и проблема, что не знаю какие условия-оганичения включить в запрос чтобы в результате осталась лишь строка со sch = '61301-80'
Я согласен, тяжело вносить условия-ограничения в запрос с неизвестным текстом.
19 мар 13, 16:12    [14068276]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
что не знаю какие условия-оганичения включить в запрос чтобы в результате осталась лишь строка со sch = '61301-80'

where sch = '61301-80' ???
19 мар 13, 16:13    [14068289]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Сергей Алексеевич, по Вашему примеру мне вместо kreditBB (так как это и есть тот тяжелый запрос) придется еще раз переписывать весь текст запроса в подзапрос, чего не хотелось бы.
19 мар 13, 16:21    [14068363]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
придется еще раз переписывать весь текст запроса в подзапрос, чего не хотелось бы.

И что мешает применить предложенное решение внутри "того тяжелого запроса" ?
19 мар 13, 16:23    [14068378]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Евгенич,

тут понимаете какая штука - телепаты все в отпуске,а как выглядит ваш запрос и какая у вас структура таблиц знаете только Вы ,посему или текст запроса целиком или набор таблиц с тестовыми данными и ,что хотиите получить в итоге
19 мар 13, 16:23    [14068380]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Коллеги, всем спасибо! Запрос из большого количества таблиц, сэмулировать тест не смогу, дешевле решение через переменную.
19 мар 13, 16:36    [14068497]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Запрос из большого количества таблиц,

И все они участвуют в формировании 2х полей из примера что ли ?
19 мар 13, 16:42    [14068540]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
select * into #kreditBB from <мой_тяжелый_запрос>
а дальше по накатанному:)
19 мар 13, 16:46    [14068563]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Glory,

ага
20 мар 13, 08:52    [14070559]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Glory,

ага

Да ладно. Для двух полей нужно максимум 2 таблицы.
20 мар 13, 11:31    [14071223]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Glory
Евгенич
Glory,

ага

Да ладно. Для двух полей нужно максимум 2 таблицы.


Два поля использую я, остальные скрыл :)
20 мар 13, 14:30    [14072246]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Два поля использую я, остальные скрыл

Да делайте с ними все, что угодно.
Как это мешает написать запрос то ?
20 мар 13, 16:23    [14073001]     Ответить | Цитировать Сообщить модератору
 Re: помогите выбрать данные  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Евгенич
придется еще раз переписывать весь текст запроса в подзапрос, чего не хотелось бы.
Используйте CTE, чтобы не писать 2 раза один и тот же подзапрос .

Евгенич
Glory
пропущено...

Да ладно. Для двух полей нужно максимум 2 таблицы.

Два поля использую я, остальные скрыл :)
Тогда вам поможет дополнительное условие: WHERE [какое то поле] = [какое то другое поле], а еще неплохо бы создать индекс: CREATE INDEX idx1 ON [какая то таблица] ([какое то поле1], [какое то поле2]) INCLUDE ([какое то поле3]).
21 мар 13, 01:41    [14075123]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить