три таблицы - Item, Detail и DetailsItem. Между собой они создают связь many-to-many. Каким образом можно реализовать поиск Item по определенным Detail.
Например, есть молоток. Он состоит из нескольких частей, таких как: железо, дерево, медь. Мне нужно найти этот молоток по деталям. Например, я вбиваю параметры такие как дерево и медь по которым точно найдется нужный элемент, но если я добавлю дополнительный параметр такой как силикон, то данный элемент отбрасывается.
Также по этим параметрам могут находиться другие элементы, которые содержат в себе железо, дерево и медь, но если один из параметров не совпадает, то элемент должен не отображаться в итоговой выборке.
SELECT item.idItem, detail.idDetail, detail.title FROM item
JOIN details_item ON item.idItem = details_item.idItem
JOIN detail ON detail.idDetail = details_item .idDetail
WHERE detail.title in ("Железо","Дерево","Медь")
Данный запрос находит элементы в которых есть эти детали, но так же отображаются другие элементы, которые имеют совпадение материалов только 1 из 3. Так же заранее неизвестно сколько будет параметров для поиска, так как в in (...) будет передаваться массив.
Я голову сломал как это реализовать в SQLITE и возможно это реализовать одним запросом?
Путем составления запроса и его выполнения
По массивы забудь сразу
Я детально смогу посмотреть только вечером поздно
Ddl таблиц хорошо бы
Там схема зала такая Select ... From item I Where exists ( select 1 from item detail join detail on .... Where Условие корреляции And detail material = 'wood' ) And exists ( select 1 from item detail join detail on .... Where Условие корреляции And detail color = 'Green' ) And .... Что-то типа этого
Обсуждают сегодня