Дополнить созданный запрос - 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 - оператор ограничения количества выводимых данных
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д