Задавайте вопросы, мы ответим
Вы не зашли.
вопрос возник по одному запросу. вывести имена клиентов купившие товар. если товар был закуплен только у одного клиента с id=2.
клиенты( id_клиента, имя клиента);
продажа(id_продажи, id_клиента);
журнал продаж (id_продажи, количество);
закупка(id_закупки, id_поставщика);
журнал закупки( id_закупки, id_товара);
поставщик(id_поставщика) товары(id_товара);
select name from клиенты where id_клиента in (select id_клиента from продажа where id_продажи in (select id_продажи from продажа)); как написать вторую часть условий?
Неактивен
Насколько я понимаю, с данной структурой это невозможно. Как определить у кого купил товар клиент под номером id=x?
Неактивен
Я так понимаю, что тут организована не система абстрактных отношений, а всё
завязано на конкретную фирму, перераспределяющую блага В частности,
поставщики и клиенты — это у одной фирмы
Тогда товары поставщика 2:
SELECT id_товара
FROM закупка JOIN журналзакупки USING (id_закупки)
WHERE id_поставщика = 2
Далее нам нужно убедиться, что этого товара нет ни у одного другого поставщика:
SELECT id_товара
FROM закупка
JOIN журналзакупки USING (id_закупки)
JOIN ( .. первый подзапрос .. ) x USING (id_товара)
GROUP BY 1
HAVING COUNT(*) = 1
Ну и, наконец, найти клиентов, которые купили только товары из списка:
SELECT имя
FROM клиенты
JOIN продажа USING (id_клиента)
JOIN журналпродаж USING (id_продажи)
JOIN ( .. второй подзапрос .. ) y USING (id_товара)
Ну и поля id_товара в журнале продаж, разумеется, не хватает, да.
Неактивен