Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 27.09.2018
Сообщений: 2

Множественный отбор из колонок одной таблицы по нескольким значениям

27.09.2018, 17:31. Показов 1953. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Как сделать: есть таблица tab1
kol1 kol2 kol3
1 1 3
1 2 3
1 3 3
2 1 1
2 2 3
2 3 1
Нужно отбирать значения по списку, например (kol1 =1, kol2 = 1, kol3 = 3), (kol1 =1, kol2 = 3, kol3 = 3), (kol1 =2, kol2 = 2, kol3 = 3)

как результат нужно получить
kol1 kol2 kol3
1 1 3
1 3 3
2 2 3
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.09.2018, 17:31
Ответы с готовыми решениями:

Отбор по нескольким значениям таблицы
Всем привет. Суть вопроса: Есть таблица ... я так понимаю, что бы вывести в отчет нужную информацию из этой таблице (информация...

Отбор по нескольким значениям.
Здравствуйте, уважаемые форумчане. Если тема моя повторяется, то не судите строго, ткните носом туда "где уже было". Честно...

Отбор в отчете по нескольким значениям.
Здравствуйте! Сегодня столкнулся с созданием отчетов, то что предлогает "Мастер отчетов" - хорошо, но не подходит для моего...

4
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
28.09.2018, 02:35
Вы и так знаете список значений. Зачем его отбирать??
Неудачный пример.
0
0 / 0 / 0
Регистрация: 27.09.2018
Сообщений: 2
28.09.2018, 10:16  [ТС]
Уточню в таблице больше колонок, вот нужно получить все колонки, но отобрать по описаным отборам
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
28.09.2018, 12:20
Ну можно как-то так попробовать. Только обязательно иметь индекс по колонкам в WHERE. Ну и список values все же не должен быть большим, иначе nested loop join будет отжирать все время выполнения.
В этом запросе три раза будет дергаться индекс на предмет поиска подходящих записей.
SQL
1
2
3
4
5
6
7
SELECT
  kol1, kol2, kol3, kol4, kol5
FROM 
  my_table mt,
  (VALUES (1,1,3), (1, 3, 3), (2, 2, 3)) AS lst(k1,k2,k3)
WHERE
  mt.kol1 = lst.k1 AND mt.kol2 = lst.k2 AND mt.kol3 = lst.k3
Добавлено через 5 минут
Если так сделать
SQL
1
2
3
4
5
6
SELECT
  kol1, kol2, kol3, kol4, kol5
FROM 
  my_table mt
WHERE 
  (kol1=1 AND kol2=2 AND kol3=3) OR (kol1=5 AND kol2=10 AND kol3=15) OR (kol1=10 AND kol2=20 AND kol3=30)
то в плане запроса наверно будет какой-то сумасшедший bitmap index scan со слиянием результатов.
скорее всего будет даже медленнее, чем первый вариант.
1
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
01.10.2018, 07:04
Лучше сделать так
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WITH data_map AS (
     SELECT 1 AS kol_1, 1 AS kol_2, 3 AS kol_3
     UNION ALL 
     SELECT 1, 3, 3
     UNION ALL 
     SELECT 2, 2, 3
), table_sel AS (
     SELECT 1 AS kol_1, 1 AS kol_2, 3 AS kol_3
     UNION ALL 
     SELECT 1, 2, 3
     UNION ALL 
     SELECT 1, 3, 3
     UNION ALL 
     SELECT 2, 1, 1
     UNION ALL 
     SELECT 2, 2, 3
     UNION ALL 
     SELECT 2, 3, 1
)
 
SELECT * FROM table_sel AS ts
JOIN data_map AS dm USING(kol_1, kol_2, kol_3)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2018, 07:04
Помогаю со студенческими работами здесь

Отбор данных в запросе по нескольким значениям в форме
Уважаемые форумчане. Пытаясь сделать простенькую базу данных натолкнулся на камень отбора данных в запросе, базирующегося на нескольких...

Фильтрация DataGridView по нескольким значениям в одной строке
Есть дата грид со множеством столбцов однородных по содержимому (например ингредиенты для рецептов блюд), как сделать фильтрацию например...

Компактная проверка соответствия одной переменной нескольким значениям
Например одну переменную надо проверить на несколько условий. Насколько я знаю самый короткий код будет выглядит вот так: $a = 5; ...

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

Join одной таблицы по нескольким полям другой таблицы
Здравствуйте! Интересует возможность следующего: Есть, например, такой справочник такого вида: Id |Name 1|Есть 2|Нет ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru