Дополнить созданный запрос - MySQL
Формулировка задачи:
Здравствуйте, есть вот такое задание
База данных, состоит из 4 таблиц.
ПОСТАВЩИКИ: Hомеp поставщика, Фамилия, Рейтинг, Гоpод
ДЕТАЛИ: Номер детали, Название, Цвет, Вес, Город
ИЗДЕЛИЯ: Номер изделия, Название, Город
ПОСТАВКИ: Номер поставщика, Номер детали, Номер изделия, Количество
Запрос должен соответствовать следующему предложению : Получить для каждого изделия информацию о поставщике, выполнившем более половины общего объема поставок для изделия. Если такого поставщика нет – написать ‘отсутствует’.
Я написал все, кроме :Если такого поставщика нет – написать ‘отсутствует’. Как это можно реализовать уже какой день над этим бьюсь?
Вот соответственно мой запрос :
CREATE TABLE number_postavchiki ( number_postavchik INT lastname nVarchar(100), rating FLOAT, city nvarchar(100) ) CREATE TABLE #ДЕТАЛИ ( number_tools INT name_tools nVarchar(100), colour nvarchar(100), weight FLOAT, city nvarchar(100) ) CREATE TABLE product( number_product INT name_product nVarchar(100), city nvarchar(100) ) CREATE TABLE delivery ( number_postavchiki INT number_tools INT number_product INT amount INT )
select lastname, rating, city from postavchiki join (select number_postavchik, number_product, amount from delivery) postav on postav.number_postavchik = postavchiki.number_postavchik join on (select delivery.number_postavchik as postavchik, delivery.number_product as Prod1, delivery.amount, sum(amount)/2 as sum_pol from delivery group by Prod1) summ on postav.amount > summ.sum_pol and postav.number_product = summ.Prod1;
Решение задачи: «Дополнить созданный запрос»
textual
Листинг программы
SELECT w.name_tools, e.name_product, w.city, e.city FROM delivery q, tools w, product e WHERE 1=1 AND w.number_tools=q.number_tools AND e.number_product=q.number_product AND w.city=e.city
Объяснение кода листинга программы
В данном коде выполняется запрос на выборку данных из трёх таблиц: delivery, tools и product. Таблицы tools и product связываются с таблицей delivery по полю number_product и number_tools соответственно. Также происходит связывание записей по полю city в таблицах tools и product.
В результате запроса получаем следующие поля: name_tools из таблицы tools, name_product из таблицы product, city из таблицы tools и city из таблицы product.
Список элементов кода:
- SELECT - оператор выбора данных
- w.name_tools - название поля, которое будет выбрано из таблицы
tools - e.name_product - название поля, которое будет выбрано из таблицы
product - w.city - название поля, которое будет выбрано из таблицы
tools - e.city - название поля, которое будет выбрано из таблицы
product - FROM - оператор указания источника данных
- delivery q - название таблицы, из которой будут выбираться данные
- tools w - название таблицы, связанной с первой таблицей по полю
number_tools - product e - название таблицы, связанной с первой таблицей по полю
number_product - WHERE - оператор условия выборки данных
- 1=1 - условие, которое всегда выполняется
- AND - логический оператор объединения условий
- w.number_tools=q.number_tools - условие связи записей по полю
number_tools - AND - логический оператор объединения условий
- e.number_product=q.number_product - условие связи записей по полю
number_product - AND - логический оператор объединения условий
- w.city=e.city - условие связи записей по полю
city - GROUP BY - оператор группировки данных
- ORDER BY - оператор сортировки данных
- LIMIT - оператор ограничения количества выводимых данных