|
Выбор неопределённого количества данных | ☑ | ||
---|---|---|---|---|
0
Yuriy60
24.04.19
✎
04:07
|
Есть неопределенное количество данных x1,x2,x3...xN. Их количество может быть любым.
Есть справочник, в котором есть поля, например 100 полей, в которых находятся внесённые данные. Необходимо найти элемент справочника, в котором есть либо все данные, указанные выше (x1,x2,x3...xN), либо какая-то их часть (по убыванию от их количества, когда они встречаются в элементе). Пример: Данные(x1,x2,x3...xN): - x1 = перем1; - x2 = перем2; - x3 = перем3 и т.д. Элементы сравочника: - эл1: пр1, пп3, перем2, на3, ор1, перем1; - эл2: ор1, на2, на3, пр1, перем1, пп3; - эл3: перем3, ор1, пп3,пр1, пр1, перем2; - ..... - ..... - элN: на3, пр1, перем2, перем1, перем3, ор1 То есть, в элементе справочника элN нужные перепенные (максимальное количество) попались все. И т.д. |
|||
1
Sserj
24.04.19
✎
04:54
|
Ну удобнее, да и правильнее, если количество данных любое - значение полей хранить в подчиненном справочнике.
Тогда можно выбирать примерно так: SELECT slave.parent as parent , count(*) FROM slave WHERE slave.value IN (data) GROUP BY slave.parent ORDER BY count(*) DESC ORDER BY |
|||
2
Yuriy60
24.04.19
✎
05:16
|
Я не знаю, какое количество данных понадобиться пользователю. Сейчас 5, а позже 30. Набор этих данных каждый раз формируется разный, согласно мониторинга. Кроме того, пользователь может добавить другие данные, свои. Одно радует, все эти данные входят в установленный перечень, и он неизменен. С подчинённостью сложно.
Например, установленный справочник данных составляет 275 элементов. А справочник, из которого необходимо сделать выборку о наличие вышеуказанных данных уже сегодня составляет более 580 тыс. записей. |
|||
3
Sserj
24.04.19
✎
05:27
|
(2) Ну кажется тут даже лучше подчиненный с индексирование по полю Значению.
|
|||
4
catena
24.04.19
✎
05:32
|
(2)100 реквизитов у вас у каждого элемента из 580 тыс, пусть даже и пустые. А подчиненный справочник будет содержать только добавленные данные.
И может даже не справочник, а регистр удобнее. Нормально запрос на 100 реквизитов вы не напишите, тут придется явно все 100 перебирать. Можно текст формировать динамически, но все равно там они все будут. С подчиненной таблицей проще - соединение и подсчет количества соединений. |
|||
5
Йохохо
24.04.19
✎
05:46
|
(3) это если там один тип значения. А так у ТС по задаче полный перебор по ссылка всегда и нечего стесняться собрать запрос, если это прямо описано в задаче
(4) да вроде просто. "либо все данные, указанные выше (x1,x2,x3...xN), либо какая-то их часть" гораздо проще обрабатывать на простой структуре хранения |
|||
6
Yuriy60
24.04.19
✎
05:59
|
(5) тип значения один у всех.
|
|||
7
catena
24.04.19
✎
06:16
|
(5)Простая структура хранения - это создать избыточное количество реквизитов объекта?
Если б в запросе можно было перебирать реквизиты итератором, было бы просто, да. |
|||
8
Yuriy60
24.04.19
✎
06:20
|
(3) я не могу понять как это сделать. Когда я создаю новый элемент, то пользователь должен в его реквизитах указать (выбрать) значения из подчинённого справочника?
И что это даст? Через два часа другой пользователь залезет в эту запись и выберет свой набор. Или я что-то не допонял? |
|||
9
Sserj
24.04.19
✎
06:26
|
(8) Да почему. Выводи на форме элемента ТабличноеПоле, заполненное подчиненными.
Добавление новых значений - добавление новых подчиненных элементов. Т.е. вместо кучи реквизитов будет Таблица со строками. |
|||
10
Йохохо
24.04.19
✎
06:34
|
(7) см (2) "Одно радует, все эти данные входят в установленный перечень, и он неизменен. С подчинённостью сложно."
чуть изменяем "либо все данные, указанные выше (x1,x2,x3...xN), либо какая-то их часть" и получаем полную жопу на подчиненных |
|||
11
catena
24.04.19
✎
06:39
|
(10)Я, видимо, спросонья жопы не вижу) Вижу жопу в перечислении всех реквизитов в запросе и подсчете их количества. Либо количестве объединений. Хотя, 275 объединений вроде физически нельзя?
А вот с подчиненной таблицей запрос неизменен при любом количестве в наборе - (1) (8)А разве в реквизите другой пользователь не может залезть и вбить свой набор? |
|||
12
catena
24.04.19
✎
06:40
|
+(11)К тому же, если заданный набор будет в произвольном порядке, то перебор в реквизитах "цэ из эн по ка" комбинаций превращается вообще в полный швах.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |