Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица / 18 сообщений из 18, страница 1 из 1
10.05.2018, 18:30
    #39642863
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Добрый вечер, нужна ваша помощь по запросу.

Есть таблица
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE testtable(
    id INT NOT NULL IDENTITY PRIMARY KEY , /*ID*/
    groups      TEXT NOT NULL, /*ID групп работавших в данном проекте*/
    project_id INT UNIQUE NOT NULL, /*ID проекта*/
    );


Пример таблицы testtable


В каждой группе имена людей которые работали над проектом.
Мне нужно вывевсти все имена людей работавших над проектом например: 5

Как правильно распарсить значение в столбце groups и сделать по ним поиск??

Как вытянуть людей из групп я то понимаю,
Код: sql
1.
SELECT name,group_id FROM users WHERE group_id= '32'


а вот как со всех этих групп вытянуть одним запросом?

Очень нужна ваша помощь, уже второй день сижу и не могу разобраться)
...
Рейтинг: 0 / 0
10.05.2018, 18:34
    #39642866
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Что говорит тот человек, который придумал такую cтруктуру?
...
Рейтинг: 0 / 0
10.05.2018, 18:39
    #39642869
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Меня очень улыбнул ваш вопрос)) Этого человека уже нету))
Можно и переделать все, не критично. Ток как это будет выглядеть? Под каждую группу новую строчку?
id groups
1 32
2 41
3 2
4 4
5 11
...
Рейтинг: 0 / 0
10.05.2018, 19:03
    #39642882
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcodeЭтого человека уже нету))Его "распяли" на процессорном блоке БЭСМ-6 и установили в холле вашей конторы, в назидание другим, дабы даже не думали делать как он?
...
Рейтинг: 0 / 0
10.05.2018, 19:05
    #39642884
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcodeМожно и переделать все, не критично. Не можно, а нужно!

noobcodeТок как это будет выглядеть? Под каждую группу новую строчку?Поштудируйте основы баз данных, нормализацию...
...
Рейтинг: 0 / 0
10.05.2018, 19:14
    #39642886
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Щукина Анна,

Ну я вижу только такой вариант структурирования данной таблицы. Если есть предложения как лучше, то буду рад вашему мнению.
...
Рейтинг: 0 / 0
10.05.2018, 19:19
    #39642888
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcode,

читать

если разовая задача, то ...
Код: 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.
create table #testtable (
    id INT NOT NULL IDENTITY PRIMARY KEY , /*ID*/
    groups      varchar(50) NOT NULL, /*ID групп работавших в данном проекте*/
    project_id INT UNIQUE NOT NULL, /*ID проекта*/
    );
create table #users(name nvarchar(50), group_id int)

insert into #testtable
	select '32, 41,2,4' ,5 union
	select '11,1' ,8 union
	select '41,55,8' ,22 union
	select '32,55' ,10

insert into #users 
	select N'тест001',32 union
	select N'тест002',55	

select distinct ISNULL(u.name, N'Н/Д') as [UserName]
from #testtable T 
	cross apply STRING_SPLIT(T.groups, ',') CA
	left join #users u ON CA.value= u.group_id

drop table #testtable
drop table #users


...
Рейтинг: 0 / 0
10.05.2018, 19:22
    #39642890
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT u.name, u.group_id
FROM users u
WHERE EXISTS
(
 SELECT *
 FROM testtable t
 WHERE ','+u.groups+',' LIKE '%,'+t.CAST(group_id AS VARCHAR(100))+',%'
);

Все индексы идут лесом. Очень печально!
...
Рейтинг: 0 / 0
10.05.2018, 19:24
    #39642891
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
Опечатка:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT u.name, u.group_id
FROM users u
WHERE EXISTS
(
 SELECT *
 FROM testtable t
 WHERE ','+u.groups+',' LIKE '%,'+CAST(t.group_id AS VARCHAR(100))+',%'
);
...
Рейтинг: 0 / 0
10.05.2018, 19:25
    #39642892
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
iiyama,

Это я так понимаю ответ, как избавиться от таблицы tabletest )) и перенести все данные по нормальному?
...
Рейтинг: 0 / 0
10.05.2018, 19:28
    #39642894
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcodeiiyama,

Это я так понимаю ответ, как избавиться от таблицы tabletest )) и перенести все данные по нормальному?Вы где-то говорили о переносе данных?
...
Рейтинг: 0 / 0
10.05.2018, 19:39
    #39642897
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
iap,

Нет, не упоменал, смутило в конце удаление таблиц))
Протестировал ваш код, ругаеться на "STRING_SPLIT"
Недопустимое имя объекта "STRING_SPLIT".
...
Рейтинг: 0 / 0
10.05.2018, 19:44
    #39642900
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcodeiap,

Нет, не упоменал, смутило в конце удаление таблиц))
Протестировал ваш код, ругаеться на "STRING_SPLIT"
Недопустимое имя объекта "STRING_SPLIT".У меня нет STRING_SPLIT().
Про удаление таблиц ничего не понял.
...
Рейтинг: 0 / 0
10.05.2018, 19:51
    #39642903
noobcode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
iap,

Простите, большая часть ответа относилась к пользователю iiyama.
О переносе таблиц не упоменал.

А в ответе iiyama были сточки:
Код: sql
1.
2.
drop table #testtable
drop table #users



Вот откуда информация о удалении таблиц)

Ваш код еще тестирую. Спасибо.
...
Рейтинг: 0 / 0
11.05.2018, 10:01
    #39643069
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcode,

1. SPLIT_STRING
2.
Q>Это я так понимаю ответ, как избавиться от таблицы tabletest )) и перенести все данные по нормальному?
A>Нет, это пример с тестовыми данными. А что делать, это решать не мне. http://%5Burl=https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-table-transact-sql?view=sql-server-2017#temporary-tables]]тынц2.
...
Рейтинг: 0 / 0
11.05.2018, 10:02
    #39643071
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcode,

сорри, тынц2
...
Рейтинг: 0 / 0
11.05.2018, 10:34
    #39643090
blonduser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcode,

Код: sql
1.
SELECT name,group_id FROM users WHERE group_id IN (32,41,2,4)
...
Рейтинг: 0 / 0
11.05.2018, 10:47
    #39643103
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица
noobcode,
Для начала - надо почитать про нормализацию и привести таблицу хотя бы к 1НФ
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделить в строке значение, которые через запятые и сделать по ним поиск в других таблица / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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