@bestauction

Как сделать SQL запрос на три таблицы?

Нужно выбрать товары, у которых есть ВСЕ возможные метки из базы. В данном случае ответ должен быть Bread. На sqlite

Пример базы

SQL исходник

CREATE TABLE product (id INTEGER, name TEXT);

INSERT INTO product  (id, name)
VALUES
    (1, 'Beer'),
    (2, 'Bread'),
    (3, 'Chease'),
    (4, 'Water');

CREATE TABLE labels (id INTEGER, name TEXT);

INSERT INTO labels (id, name)
VALUES
    (1, 'Nice'),
    (2, 'Bad'),
    (3, 'Normal'),
    (4, 'Lol');

CREATE TABLE labels_products (label_id INTEGER, product_id INTEGER, UNIQUE (label_id, product_id));

INSERT INTO labels_products (label_id, product_id)
VALUES 
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 1),
    (1, 3),
    (2, 2),
    (3, 3);

  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
select 
	product.id
from product
inner join labels_products on labels_products.product_id=product.id
inner join labels onlabels.id=labels_products.label_id
group by product.id
having count(product.id)=(select count(*) from labels)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы