powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Итоговый запрос
5 сообщений из 5, страница 1 из 1
Итоговый запрос
    #38834302
KSVSVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть

1. Список изделий:
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE Images
(Id INTEGER PRIMARY KEY AUTOINCREMENT, 
 Image BLOB, 
 Coment TEXT, 
 Format INTEGER)



2. Иерархическая структура категорий:
Код: sql
1.
2.
3.
4.
CREATE TABLE Structure
(Id INTEGER PRIMARY KEY AUTOINCREMENT,
 Name TEXT NOT NULL, 
 Parent INTEGER NOT NULL)



3. Каждое изделие может попадать в несколько категорий, что учитывается в таблице:
Код: sql
1.
2.
3.
4.
CREATE TABLE Links
(Id INTEGER PRIMARY KEY AUTOINCREMENT,
 Category INTEGER NOT NULL, 
 Item INTEGER NOT NULL)



Требуется получить список изделий, входящих во все выбранные категории. Пытался делать так (частный случай):
Код: sql
1.
2.
SELECT Image, Coment, Format FROM Images 
WHERE Id IN (SELECT Item FROM Links WHERE Category = 3 AND Category = 4 )



Проблема где-то во вложенном запросе. Как выбрать из таблицы значения, Относящиеся одновременно к нескольким указанным категориям?
...
Рейтинг: 0 / 0
Итоговый запрос
    #38834390
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
join не предлагать?
...
Рейтинг: 0 / 0
Итоговый запрос
    #38834423
KSVSVK,

задача твоя - суть есть "реляционное деление". в рамках SQL-запроса решается либо [not]exists-подзапросами, либо группировкой с последующей фильтрацией результата (group by + having)
...
Рейтинг: 0 / 0
Итоговый запрос
    #38834638
KSVSVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что и как в данном случае можно группировать я не знаю, т.к. в моем мозгу GROUP BY ассоциируется с агрегатными функциями, а их в запросе нет.

В принципе, должен работать запрос вида:

Код: sql
1.
2.
3.
SELECT Image, Coment, Format FROM Images 
WHERE Id IN (SELECT Item FROM Links WHERE Category = 3 AND 
          Id IN (SELECT Item FROM Links WHERE Category = 4 ))
...
Рейтинг: 0 / 0
Итоговый запрос
    #38835650
KSVSVK,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT i.Image, i.Coment, i.Format 
  FROM Images i
  join (
         SELECT Item 
           FROM Links 
          WHERE Category in (3,4)
          group by Item
         having count(distinct Category) = 2
       ) v
    on i.id = v.Item
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Итоговый запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]