Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 01.02.2023
Сообщений: 20

SQL Server n количество id в поле таблицы и выборка записей по таблице

23.06.2023, 15:43. Показов 1479. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите пожалуйста, можно ли реализовать следующее.
Есть небальная таблица "Записи". В этой таблице есть поле users, которое хранит id пользователей, так как доступ к записи может быть у нескольких человек. Реализовано поле как varchar, а usersid перечисляются через запятую.
Возможно ли в один запрос, вывести строку с именами этих пользователей, то есть разобрать строку по usersid и сделать SELECT по каждому usersid в таблице пользователей, и вернуть их имена в строку?

ID NAME
1 Саша
2 Вика

Хранить информация в поле таблице в виде "1,2".
Вернуть строку Саша, Вика.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.06.2023, 15:43
Ответы с готовыми решениями:

Посчитать количество записей в одной таблице и передать значение в поле другой таблицы
Здравствуйте. Есть две таблицы "Деканат" и "Студенты". Нужно чтобы в поле "Деканат.Количество студентов" отображалось общее...

Выборка записей с уникальным значением в одном поле LINQ to SQL
Здравствуйте! Есть таблица "Услуги", с которой нужно вывести уникальные значения "Тип" и любые "idУслуги" (в базе...

Выборка диапазона дат без создания таблицы в sql server
Добрый день форумчане. Столкнулся с такой проблемой, все в интернете пишут один и тот же запрос для MySql на создание виртуального...

28
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
03.07.2023, 17:28
Студворк — интернет-сервис помощи студентам
T-SQL
1
SELECT name FROM users WHERE EXISTS (SELECT id_user from access where name='<ваше значение>')
как-то так?
откорректируйте мой запрос, я с ним запутался.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
03.07.2023, 17:54
та просто join без всяких exists и in
1
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
03.07.2023, 17:59
exists - Это если таблица существует
или если cуществует возвращаемый набор данных, я правильно понимаю?

Добавлено через 1 минуту
так что уважаемые гуру посоветуют? я сам - мидл программер
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
03.07.2023, 18:05
Ludwig Valentin,
T-SQL
1
select * from myPleasure mp where exists (select 1 from derived d join mp where d.parentId = mp.id)
Добавлено через 3 минуты
Аватар,
таки да, но топикстартер даже 1нф нарушает
да и пропал куда-то
1
672 / 295 / 121
Регистрация: 12.04.2022
Сообщений: 1,006
03.07.2023, 21:27
Цитата Сообщение от Аватар Посмотреть сообщение
не веришь? в разных источниках именно это утверждается
Не верю (с) Станиславский

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
select @@version
-- Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)   Oct  8 2022 05:58:25
 
use tempdb
 
create table #LageT (a int, b int)
create table #SmallT (a int, b int)
 
set nocount on
declare @i int
set @i = 0
while @i < 10000
  begin
    insert #LageT values(@i, @i)
    insert #LageT values(@i, @i)
    set @i = @i + 2
  end
go
 
set nocount on
 
declare @i int
set @i = 0
while @i < 100
  begin
    insert #SmallT values(@i, @i)
    set @i = @i + 1
  end
 
go
--Проверяем на куче тезис: Подзапрос в exists прекращает выполняться как только встречена первая строка удовлетворяющая условию отбора. Для in подзапрос выполняется до конца.
SET STATISTICS XML on 
go
 
select * from #LageT T1
where a in (select a from #SmallT T2 )
 
-- При IN прочитано из большой таблицы 10000 записей, те вся таблица
/*
ColumnReference Table="#LageT" Alias="[T1]" Column="a"
ActualRowsRead="10000"
*/
select * from #LageT T1
where exists (select a from #SmallT T2 where T2.a = T1.a )
 
-- При exists прочитано из большой таблицы 10000 записей, те вся таблица
/*
ColumnReference Table="#LageT" Alias="[T1]" Column="a"
<RelOp NodeId="2" PhysicalOp="Table Scan"
ActualRowsRead="10000"
*/
 
-- тезис, что при exists ищется первое совпадение - не подтвердился. 
 
SET STATISTICS XML off 
go
 
 
-- Ладно, что произойдет с CI на большой таблице
create clustered index T1a on #LageT(a)
-- drop  index T1a on #LageT
SET STATISTICS XML on 
go
 
select * from #LageT T1
where a in (select a from #SmallT T2 )
 
-- При IN прочитано из большой таблицы 100 записей
/*
ColumnReference Table="#LageT" Alias="[T1]" Column="a"
<RelOp NodeId="2" PhysicalOp="lustered Index Seek"
ActualRowsRead="100"
*/
select * from #LageT T1
where exists (select a from #SmallT T2 where T2.a = T1.a )
 
-- При exists прочитано из большой таблицы 100 записей
/*
ColumnReference Table="#LageT" Alias="[T1]" Column="a"
<RelOp NodeId="2" PhysicalOp="lustered Index Seek"
ActualRowsRead="100"
*/
 
-- второй тезис, что при IN подзапрос выполняется до конца - тоже не подтвердился. 
 
SET STATISTICS XML off 
 
-- Чистим за собой
drop table #LageT;
drop table #SmallT;
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
03.07.2023, 21:32
PaulWist,

bravo, maestro!
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
03.07.2023, 21:57
Цитата Сообщение от PaulWist Посмотреть сообщение
select * from #LageT T1
where exists (select a from #SmallT T2 where T2.a = T1.a )
-- При exists прочитано из большой таблицы 10000 записей, те вся таблица
а при чем здесь таблица #LageT? конечно все строки из нее прочтутся. речь то о подзапрсе из exists. а там читается таблица #SmallT, вот ее чтение прекратится при встрече первой строки удовлетворяющей отбору. и так для каждй строки из внешнего запроса, т.е. 10000 раз
0
672 / 295 / 121
Регистрация: 12.04.2022
Сообщений: 1,006
04.07.2023, 09:51
Цитата Сообщение от Аватар Посмотреть сообщение
а при чем здесь таблица #LageT? конечно все строки из нее прочтутся. речь то о подзапрсе из exists.
Посмотрите на план с CI , в котором NL.

В качестве "входа" оптимизатор выбирает именно #SmallT, и это разумно, дешевле просканировать 100 записей и слазить 100 раз в #LageT, чем прочитать 10 тыс. и столько же раз слазить в #SmallT, поэтому прекращения чтения из #SmallT не будет, она читается вся.
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
05.07.2023, 21:01
значит почет и уважуха разработчикам оптимизатора )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2023, 21:01

Вывод записей таблицы SQL Server на форму
Можно ли подключиться к БД SQL Server и вывести данные на форму. С Java не работал. Подскажите литературу по теме.

Число из чейки stringrid в поле таблицы sql server
из ячейки stringrid'a введенное число должно записаться в базу на sql server'e (используетсяms sql server 2008 r2 express) вот код ...

Нужно вывести определенное количество записей из таблицы. При этом количество вводится в форме в поле
Всем привет, ребят. Запнулся, не знаю уже, что делать. У меня есть форма, в которой указываю значение в поле (например - 100). Есть...

Указать в поле количество связанных записей из другой таблицы
Здравствуйте! Помогите, пожалуйста, решить следующую задачу. Имеются 2 таблицы: &quot;Организации&quot; и &quot;Сотрудники&quot;....

Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server?
ВОПРОС: Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server? MS SQL Server...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru