Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите сформировать запрос (сложное объединение)  [new]
voix_kas
Member

Откуда:
Сообщений: 73
Доброго времени суток.
Прошу помощи в написании запроса (MS SQL 2012 (RC0)).

Допустим, мы имеем три таблицы:
Таблица №1 "плод".
Столбцы: "ид (автоинкремент)", "название".
1. Овощ.
2. Фрукт.
3. Ягода.

Таблица №2 "покупатель".
Столбцы: "ид (автоинкремент)", "наименование"
1. "Рога и Копыта".
2. "Вася Пупкин"

Таблица №3 "заказы".
Столбы: "ид (автоинкремент)", "плод.ид", "покупатель.ид".

Допустим,
1. покупатель "Рога и Копыта" сделал заказ на "овощ".
2. покупатель "Вася Пупкин" сделал заказ на "ягода".
Тогда в таблице №3 появились две записи:
1, 1, 1.
2, 3, 2.


Если я хочу получить список заказов, в котором хотя бы раз упоминается каждый из плодов, я таблицу "плод" подставляю в качестве OUTER RIGHT JOIN.
Итог будет:
1, 1, 1.
NULL, 2, NULL.
2, 3, 2.

А если требуется задать запрос, в котором:
1. хотя бы раз упоминался каждый плод.
2. только по одному покупателю - "Рога и Копыта".
Т.е. результат должен быть такой:
1, 1, 1.
NULL, 2, 1 (либо NULL).
NULL, 3, 1 (либо NULL).

Как будет выглядеть такой запрос?

Прошу извинить, если постановка задачи сложна для восприятия.
9 авг 12, 00:15    [12984968]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сформировать запрос (сложное объединение)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
voix_kas
Если я хочу получить список заказов, в котором хотя бы раз упоминается каждый из плодов
Как это? У вас нельзя сделать заказ больше чем из одного плода, схема данных такая.
voix_kas
Итог будет:
NULL, 2, NULL.
Это как? Неопределённый покупатель в неизвестном заказе купил плод "Фрукт" :-)
9 авг 12, 00:59    [12985076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить