powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из таблицы по определённым полям, id которых записаны в другой таблице
5 сообщений из 5, страница 1 из 1
Выборка из таблицы по определённым полям, id которых записаны в другой таблице
    #39625418
uoepvf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите пожалуйста как сделать
Есть таблица table и у неё есть поля id1, id2,...,id10
Также есть вторая таблица idtable с полем "p" с значениями от 1 до 10, но могут быть пропуски например не будет значения 6 и 7

Как можно получить значения из таблицы table из полей id(p) - где p значение из таблицы idtable
...
Рейтинг: 0 / 0
Выборка из таблицы по определённым полям, id которых записаны в другой таблице
    #39625423
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uoepvf,

проще всего будет динамический запрос сделать.

Но если к-во этих "id1, id2,...,id10" - конечно, можно "поизгаляться" с pivot/unpivot
...
Рейтинг: 0 / 0
Выборка из таблицы по определённым полям, id которых записаны в другой таблице
    #39625444
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uoepvf,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Select table.* 
From table 
join idtable on 
case idtable.p 
 When 1 Then table.id1
 When 2 Then table.id2
 When 3 Then table.id3
 ......
 When 10 Then table.id10 end = idtable.id
...
Рейтинг: 0 / 0
Выборка из таблицы по определённым полям, id которых записаны в другой таблице
    #39625450
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopelly,

имхо, в сабже, речь про вывод по условию, а не про джойн по условию ...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare @t table (id1 int, id2 int, id3 int, id4 int)
insert into @t values
	(11,12,13,14)
	,(21,22,23,24)
	,(31,32,33,34)
	,(41,42,43,44)

declare @q table (p int)
insert into @q values (1),(3)

;with cte as (
	select 
		val, cast(substring(id,3,100) as int) as id 
	from @t t
	unpivot (val for id in(id1, id2, id3, id4)) as unpvt 
)
select * from cte 
where id in (select p from @q)



или совсем "по-простому"
Код: sql
1.
2.
3.
4.
5.
declare @SQL nvarchar(max)=''

select @SQL=@SQL+case when @SQL<>'' then ' union all ' else '' end + 'select id'+cast(p as nvarchar)+' from @t' from @q
print @SQL	-- select id1 from @t union all select id3 from @t
exec (@SQL)
...
Рейтинг: 0 / 0
Выборка из таблицы по определённым полям, id которых записаны в другой таблице
    #39636214
uoepvf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
courtKopelly,

Код: sql
1.
2.
3.
4.
5.
declare @SQL nvarchar(max)=''

select @SQL=@SQL+case when @SQL<>'' then ' union all ' else '' end + 'select id'+cast(p as nvarchar)+' from @t' from @q
print @SQL	-- select id1 from @t union all select id3 from @t
exec (@SQL)



Так всё получилось, всё работает, но как только "засовываю" в ХП не работает выдаёт пустой результат запрос, если запускать не в ХП, то результат выдаёт
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из таблицы по определённым полям, id которых записаны в другой таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]