|
Как получить только те записи, которые присутствуют во всех наборах?
| ☑ |
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) Зачем генерация? Тоже заменяется банальным "В"
|
|