Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите верно составить запрос! (kiosuki) 12/02/2008 - 13:39:46
      Re: Помогите верно составить запрос! (bac) 12/02/2008 - 19:16:16

> Original message text:
> From: kiosuki - 12/02/2008 - 13:39:46
> Subject:Помогите верно составить запрос!
> -----------------
> Всем привет.
>
> Есть 3 таблицы:
> Продавцы: sellers (seller_id,seller_name)
> Фрукты: fruits (fruit_id,fruit_name)
> Таблица, в которой показано какие фрукты есть в наличии у каждого продавца: existense (seller_id,fruit_id)
>
> Каждый продавец может продавать множество наименований фруктов, а может и ни одного не продавать.
>
> Задача состоит в следующем: как выбрать из таблицы фруктов и таблицы продавцов только те фрукты, которых нет у определенного продавца? При этом в результате для определенного фрукта должен быть указан продавец с минимальным seller_id.
>
> К примеру, есть 3 продавца:
> (seller_id=1) Мария продает яблоки, груши;
> (seller_id=2) Наталья продает груши, сливы;
> (seller_id=3) Ольга продает яблоки, апельсины, сливы;
>
> А нам нужно узнать какие фрукты и у кого можно купить, кроме тех, что есть у Марии. Результат должен быть такой:
>
> сливы - Наталья,
> апельсины - Ольга
>
> Спасибо.
>


From: bac - 12/02/2008 - 19:16:16
Subject:Помогите верно составить запрос!
-----------------
Только, если условие правильно то, у Ольги есть еще сливы

CREATE TABLE sellers (
seller_id INTEGER AUTO_INCREMENT PRIMARY KEY,
seller_name VARCHAR(35)
) ENGINE=INNODB;

CREATE TABLE fruits (
fruit_id INTEGER AUTO_INCREMENT PRIMARY KEY,
fruit_name VARCHAR(35)
) ENGINE=INNODB;

CREATE TABLE existense (
existense_id INTEGER AUTO_INCREMENT PRIMARY KEY,
seller_id INTEGER,
fruit_id INTEGER,
FOREIGN KEY (seller_id) REFERENCES sellers (seller_id),
FOREIGN KEY (fruit_id) REFERENCES fruits(fruit_id)
) ENGINE=INNODB;

INSERT INTO sellers (seller_name) VALUES
( 'Мария'),
( 'Наталья'),
( 'Ольга');

INSERT INTO fruits (fruit_name) VALUES
('Яблоки'),
('Груши'),
('Сливы'),
('Апельсины');

INSERT INTO existense (seller_id, fruit_id) VALUES
(1,1),
(1,2),
(2,2),
(2,3),
(3,1),
(3,3),
(3,4);

SELECT seller_name,fruit_name
FROM existense LEFT JOIN fruits USING (fruit_id)
LEFT JOIN sellers USING (seller_id)
WHERE existense.seller_id != 1 AND
existense.fruit_id NOT IN (SELECT fruit_id FROM existense WHERE seller_id = 1 );


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33044



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |