Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209

Исключающая выборка связанных значений

18.11.2022, 19:19. Показов 729. Ответов 10

Студворк — интернет-сервис помощи студентам
Всем привет!
Не могу найти решение.

Есть таблица
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
create table #VRelationsOfLists
(
  id_relation int,
  id_row int,
  id_list int,
  name_list nvarchar(100),
  id_value int,
  value nvarchar(100)
)
 
insert into #VRelationsOfLists
(
  id_relation,
  id_row,
  id_list,
  name_list,
  id_value,
  value
)
values
(1,1,6,'countries',10,'russia'),
(1,1,7,'region',13,'omskaya'),
(1,1,8,'city',18,'omsk'),
(1,2,6,'countries',10,'russia'),
(1,2,7,'region',14,'permskaya'),
(1,2,8,'city',16,'perm'),
(1,3,6,'countries',19,'ukraine'),
(1,3,7,'region',20,'kievskaya'),
(1,3,8,'city',21,'kiev')
На форме есть контролы (раскрывающиеся списки) со списками стран (id_list = 6), областей (id_list = 7) и городов (id_list = 8) из представленной выше таблицы.
Пользователь может выбрать значение из любого списка очерёдность выбора не строгая.
Например выбрали страну - Россия, далее раскрываем список областей и у нас в списке будут только области из России.
После выбора области, в списке городов должны остаться только города из этой области.
Если первым выбрали город, то по задумке область и страна будут вставать автоматически, т.к. один

Запросы T-SQL будут генерироваться автоматически перед выбором значения из списка.

Т.е. понятно, что запросов должно быть несколько, но до конца не получается додумать.
Это я пробовал разные варианты:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
  SELECT DISTINCT id_value,[value] FROM #VRelationsOfLists WHERE id_list = 6 --Получили список стран
  --Выбрали страну с id 10
  SELECT DISTINCT id_row FROM #VRelationsOfLists WHERE id_value IN(10)--Получили список связанных строк с id 10
  
  --SELECT COUNT(DISTINCT id_row) FROM VRelationsOfLists WHERE id_value IN(10)
 
  SELECT * FROM #VRelationsOfLists WHERE id_list = 7 AND id_row IN(1,2)--Получили список областей
  --Выбрали область с id 13
  SELECT DISTINCT id_row FROM #VRelationsOfLists WHERE id_value IN(10,13) --Получили список связанных строк с id 10,13
  SELECT COUNT(DISTINCT id_row) FROM #VRelationsOfLists WHERE id_value IN(10,13)
 
  SELECT * FROM #VRelationsOfLists WHERE id_list = 8 AND id_row IN(1)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2022, 19:19
Ответы с готовыми решениями:

Выборка финальных значений в промежутке и нахождение несуществующих значений
всем привет! прошу помощи начинающему, есть 3 таблицы: две из них - с данными о товарах (на уровне магазина и области), третья -...

Выборка из двух связанных таблиц
Есть две таблицы связаны между собой как один к многим. Сделал выборку с помощью подзапроса. select c.id_t1, c.sn from table1 c ...

Выборка из связанных таблиц по условию
Добрый день. Есть две таблицы: Задачи и Варианты необходимо выбрать только те задачи и которых есть варианты. Как это сделать ? Они...

10
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
18.11.2022, 19:38
вопрос то в чем?
выбрали город, а ты не можешь заполнить страну по городу?

Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
(1,3,6,'countries',19,'ukraine'),
(1,3,7,'region',20,'kievskaya'),
(1,3,8,'city',21,'kiev')
че та как то ты неправильно города хранишь
почему не сделать в 1 строку?
страна, регион, город
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
18.11.2022, 19:51  [ТС]
qwertehok, в одну строку можно, это всё понятно, но в случае если нужно добавить район/улицу/дом, то нужно добавлять новые столбцы, с таким вариантом всё просто, в плане выборки, но иначе бы я сюда не писал

Нужны запросы и их последовательность для выборки связанных значений для списков на основании сделанного выбора.
Выбрали страну => в списке регионов и городов остались регионы и города из выбранной страны.
Выбрали страну и регион => в списке городов остались города связанные с выбранными страной и регионом.
Выбрали регион => в списке стран осталась страна в которой находится выбранный регион, в списке городов города из этой страны и выбранного региона.
Выбрали город => остался регион и страна выбранного города.
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
18.11.2022, 19:55
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
но в случае если нужно добавить район/улицу/дом, то нужно добавлять новые столбцы
зачем?
я тебя удивлю, но перед созданием таблицы все сначала продумывают
и адрес берут из КЛАДРа (или что там сейчас)



Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
Выбрали страну => в списке регионов и городов остались регионы и города из выбранной страны.
Выбрали регион => в списке стран осталась страна в которой находится выбранный регион, в списке городов города из этой страны и выбранного региона.
Выбрали город => остался регион и страна выбранного города.
сделай себе отдельно справочник
id_страны\страна\id_региона\регион\id_го рода\город
в таблицу с адресами пиши только id страны\региона\города

а когда нужно что-то получить - обычный SELECT из справочника оставит только нужные значения
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
18.11.2022, 20:25  [ТС]
qwertehok,
Цитата Сообщение от qwertehok Посмотреть сообщение
зачем?
я тебя удивлю, но перед созданием таблицы все сначала продумывают
и адрес берут из КЛАДРа (или что там сейчас)
Это абстрактный пример.
Списки могут быть какими угодно и связанными как угодно.
Может быть список производителей, типов и моделей оборудования и я захочу связать производителя с городом или к производителю добавить адрес.
Для этого у меня есть древовидная структура.

Еще раз повторюсь, если бы мне нужно было построить таблицы с ограниченным и заранее известным количеством столбцов, то так и было бы сделано.

Добавлено через 21 минуту
Вот визуальное представление таблицы, если это поможет
id_relationid_rowid_listname_listid_valuevalue
116countries10russia
117region13omskaya
118city18omsk
126countries10russia
127region14permskaya
128city16perm
136countries19ukraine
137region20kievskaya
138city21kiev
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
18.11.2022, 20:33
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
Вот визуальное представление таблицы, если это поможет
еще раз повторю - адреса так не хранят
Цитата Сообщение от Евгений_Пермь Посмотреть сообщение
id_row
это не ID строки

1 1 6 countries 10 russia
1 2 6 countries 10 russia
так россия это 116 или 126?
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
18.11.2022, 20:36  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
это не ID строки
Это искусственный id строки
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
18.11.2022, 20:50
Как спроектировать БД с переменным количеством параметров?
вам такое нужно?
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
18.11.2022, 21:02  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
вам такое нужно?
По сути - да.
Вот такая у меня схема.
Миниатюры
Исключающая выборка связанных значений  
0
5963 / 4539 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
18.11.2022, 21:14
ужасненько как-то
через год вы сами то это поймете?
0
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
18.11.2022, 22:08  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
ужасненько как-то
Дума есть и более ужасные вещи =)
Пойму или нет - это уже другой вопрос.

Добавлено через 33 минуты
*думаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2022, 22:08
Помогаю со студенческими работами здесь

Выборка данных из 4 связанных таблиц
Всем добрый день! Создавал 3 таблицы (категория, производитель, статус продукта) и в 4-ю (продукт) засунул id прошлых как fk. Сейчас нужно...

Выборка связанных данных из двух таблиц
На текущий момент запрос такого вида SELECT id, product1, ( SELECT price2 FROM post_2 WHERE UPPER(post_2.post2) ...

Delphi и SQL Выборка из связанных таблиц, по ключевым полям с разными типами (счётчик-текстовый)
Всем доброго времени суток. Разрабатываю программу по учёту сотрудников. Проделана очень большая работа, много функций. В БД около 20...

Сравнение значений между собой в порядке даты и выборка отрицательных значений разницы
Уважаемые, Помогите решить следующую нетривиальную задачу есть таблица следующего вида (название столбцов) артикуль ...

Дата, исключающая выходные
Доброго времени суток! Помогите, пожалуйста, решить следующую задачу: необходимо в поле таблицы задать значение по умолчанию, которое...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru