powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Sql. Как получить значение одной колонки, где значение другой равно перечню значений
10 сообщений из 10, страница 1 из 1
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972584
hunter79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица
Код: sql
1.
ffv(id, f_id, fv_id)

.

Пример данных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
id, f_id, fv_id
11, 22, 33
11, 11, 22
11, 33, 11
22, 33, 33
33, 11, 22
33, 22, 33



В процедуру передаю строку значений
Код: sql
1.
@fv_id = '33,22'

.
Загоняю во временную таблицу
Код: sql
1.
select value into #fv from string_split(@fv_id, ',')

.

Как получить все id, у которых
Код: sql
1.
fv_id = 33 и fv_id = 22

.
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972585
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79
Как получить все id, у которых
Код: sql
1.
fv_id = 33 и fv_id = 22

Никак, потому что fv_id не может быть одновременно равно 33 и 22.
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972588
hunter79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

одновременно нет, но для
Код: sql
1.
id=11

есть записи
Код: sql
1.
fv_id=33 и 22

:
Код: sql
1.
2.
3.
id, f_id, fv_id
11, 22, 33
11, 11, 22



то-есть, если
Код: sql
1.
fv_id

содержит разные значения (те что передаю) для одного
Код: sql
1.
id

, то мне этот
Код: sql
1.
id

нужен.

возможно я неправильно задал вопрос...
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972591
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79
Гавриленко Сергей Алексеевич,

одновременно нет, но для
Код: sql
1.
id=11

есть записи
Код: sql
1.
fv_id=33 и 22

:
Код: sql
1.
2.
3.
id, f_id, fv_id
11, 22, 33
11, 11, 22



то-есть, если
Код: sql
1.
fv_id

содержит разные значения (те что передаю) для одного
Код: sql
1.
id

, то мне этот
Код: sql
1.
id

нужен.

возможно я неправильно задал вопрос...


Код: sql
1.
select [id] from [ffv] where [fv_id] in (select [value] from string_split(@fv_id, ','));
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972595
hunter79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff

Код: sql
1.
select [id] from [ffv] where [fv_id] in (select [value] from string_split(@fv_id, ','));



в данном случае я получу id = 11, 22, 33.
а мне нужно чтобы id = 11, 33.
то-есть, если у id, fv_id=33 (и только), то мне этот id не нужен.
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972608
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79
felix_ff

Код: sql
1.
select [id] from [ffv] where [fv_id] in (select [value] from string_split(@fv_id, ','));



в данном случае я получу id = 11, 22, 33.
а мне нужно чтобы id = 11, 33.
то-есть, если у id, fv_id=33 (и только), то мне этот id не нужен.


о госпади я три раза перечитал что вы тут написали и все равно нихрена не понял что вам нужно.
из вашего объяснения я не понимаю почему строка с id 22 не должна попадать
ибо вы пишите что должны попасть строки только с id равными 11 или 33, потому что у них типа f_id = 33 (в вашем примере типа первая строка и последняя). в тоже время у строки с id = 22 тоже f_id = 33, так с какого рожна она не должна попасть?

дайте входной набор данных, параметр который задаете, выходной набор данных который хотите получить.

или пишите внятнее типа:
при передаче переменной @f_id в которой содержится строка целых чисел разделенных запятыми: пример @set @f_id = '12, 13'

из набора данных такого то:
idf_idfv_id1102021120312134121451310

нужно получить строки:
id f_id fv_id3121351310

потому что: текст почему именно эти строки
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972633
hunter79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Код: sql
1.
2.
3.
4.
5.
6.
7.
id, f_id, fv_id
11, 22, 33
11, 11, 22
11, 33, 11
22, 33, 33
33, 11, 22
33, 22, 33



Задача:
выбрать те значения (id) с таблицы, у которых fv_id равно только переданным значениям.
то-есть, если я передаю fv_id="22,33", то если для записи с id нет значения fv_id=22, то мне такой id не нужен.
в данном конкретном случае мне нужны id="11,33", потому как для них поле fv_id содержит и 22 и 33. для id=22 значение fv_id есть только 33, 22 нет, поэтому оно мне не нужно...
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972640
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79,

Реляционное деление, что ли?
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972767
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79
felix_ff,

Код: sql
1.
2.
3.
4.
5.
6.
7.
id, f_id, fv_id
11, 22, 33
11, 11, 22
11, 33, 11
22, 33, 33
33, 11, 22
33, 22, 33



Задача:
выбрать те значения (id) с таблицы, у которых fv_id равно только переданным значениям.
то-есть, если я передаю fv_id="22,33", то если для записи с id нет значения fv_id=22, то мне такой id не нужен.
в данном конкретном случае мне нужны id="11,33", потому как для них поле fv_id содержит и 22 и 33. для id=22 значение fv_id есть только 33, 22 нет, поэтому оно мне не нужно...


Код: 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.
declare @t table (
       id int, 
       fv_id int
);

insert into @t values 
(11, 33),
(11, 22),
(11, 11),
(22, 33),
(33, 22),
(33, 33);

declare @fv_id varchar(255) = '33,22';

--вариант 1
with x as (
    select distinct 
          try_cast([value] as int) as [fv_id],
          count(1) over (order by 1/0) as [xcnt]
    from string_split(@fv_id, ',')
),
y as (
    select
          count(x.[fv_id]) over (partition by id order by 1/0 range between unbounded preceding and unbounded following) as tcnt,
          x.xcnt,
          t.[id]
    from (select distinct [id], [fv_id] from @t) t
        left join x on x.[fv_id] = t.[fv_id]
)
select distinct y.[id]
from y
where y.[tcnt] >= y.[xcnt];

--вариант 2
select distinct t.[id]
from @t t
where 0 = (select count(1) from
           (select try_cast([value] as int) from string_split(@fv_id, ',')
            except
            select [fv_id] from @t t2 where t2.[id] = t.[id]
           ) TX ([va])
           );

--вариант 3
select distinct t1.[id]
from @t t1
where t1.[fv_id] = ALL(select distinct try_cast([value] as int) from string_split(@fv_id, ',')
                       except
                       select t2.[fv_id] from @t t2 where t2.[id] = t1.[id]);
...
Рейтинг: 0 / 0
Sql. Как получить значение одной колонки, где значение другой равно перечню значений
    #39972797
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunter79
felix_ff

Код: sql
1.
select [id] from [ffv] where [fv_id] in (select [value] from string_split(@fv_id, ','));



в данном случае я получу id = 11, 22, 33.
а мне нужно чтобы id = 11, 33.
то-есть, если у id, fv_id=33 (и только), то мне этот id не нужен.


можно перед селектом (см. выше) убрать ненужное

Код: sql
1.
delete from  [ffv] where [fv_id]=33 
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Sql. Как получить значение одной колонки, где значение другой равно перечню значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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