SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.03.2012 09:03:23

aaaaaa1aaaaaa
Участник
Зарегистрирован: 30.03.2012
Сообщений: 1

помогите пожалуйста с запросом

вопрос возник по одному запросу. вывести имена клиентов купившие товар. если товар был закуплен только у одного клиента с 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 продажа)); как написать вторую часть условий?

Неактивен

 

#2 30.03.2012 12:54:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите пожалуйста с запросом

Насколько я понимаю, с данной структурой это невозможно. Как определить у кого купил товар клиент под номером id=x?

Неактивен

 

#3 02.04.2012 09:29:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: помогите пожалуйста с запросом

Я так понимаю, что тут организована не система абстрактных отношений, а всё
завязано на конкретную фирму, перераспределяющую блага smile В частности,
поставщики и клиенты — это у одной фирмы smile

Тогда товары поставщика 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_товара в журнале продаж, разумеется, не хватает, да.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson