Имя: Пароль:
1C
 
Как получить только те записи, которые присутствуют во всех наборах?
0 RomaH
 
naïve
30.09.20
14:53
Есть РС с измерениями:
Картинка + цвет

в него пишутся картинка и цвет который на ней присутсвует


пользователь вводит в строку "массив" слов - например "чер зел кра бел"

я к этим словам подбираю "похожие" цвета (Черный, черничный, зеленый, красный, белый)

надо найти картинки на которых есть все перечисленные цвета внутри одного запроса

например для тройки цветов получили таблицу:

Таблица1

Ч - К1*
Ч - К2
Ч - К3
Б - К1*
Б - К4
З - К1*
З - К2

нужна только К1


первое внутреннее соединение сама с собой по К = К

Таблица2

Ч - К1*
Ч - К2
Б - К1*
З - К1*
З - К2

отсюда имеем таблицу картинок
К1*
К2

потом полное соединение с таблицей цветов

Таблица4
Ч - К1*
Ч - К2
З - К1*
З - К2
Б - К1*
Б - К2

а уже эту таблицу соединяем с таблицей2 по цвету и картинке

Ч - К1* - К1*
Ч - К2  - К2
З - К1* - К1*
З - К2  - К2
Б - К1* - К1*
Б - К2  - NULL

по условию ЕСТЬ NULL - находим исключаемые из таблицы картинок картинки

у меня пока так
1 fisher
 
30.09.20
14:56
Один запрос. В отборе ИЛИ по цветам, в СГРУППИРОВАТЬ - Картинка, в ИМЕЮЩИЕ - условие на количество цветов.
2 RomaH
 
naïve
30.09.20
15:06
(1) а как в одном запросе количество цветов засунуть в условие? - цвета я тоже запросом получаю
Где Цвет.Наименование ПОДОБНО %ааа%
3 RomaH
 
naïve
30.09.20
15:07
по сути можно МВТ
узнать количество в выборке
и подставить в текст ...
4 RomaH
 
naïve
30.09.20
15:08
"В отборе ИЛИ по цветам" - это генерация текста запроса по количеству цветов которые получаются другим запросом
5 _Batoo
 
30.09.20
15:18
Условие: Цвет В (ВЫБРАТЬ ВТ_ИскомыеЦвета.Цвет Из ВТ_ИскомыеЦвета)
6 fisher
 
30.09.20
15:30
(2) А в чем проблема?
ИМЕЮЩИЕ КОЛИЧЕСТВО(Цвет) В (ВЫБРАТЬ КОЛИЧЕСТВО(Цвет) ИЗ....)
7 fisher
 
30.09.20
15:32
(4) Зачем генерация? Тоже заменяется банальным "В"