Дополнить созданный запрос - 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. Список элементов кода:

  1. SELECT - оператор выбора данных
  2. w.name_tools - название поля, которое будет выбрано из таблицы tools
  3. e.name_product - название поля, которое будет выбрано из таблицы product
  4. w.city - название поля, которое будет выбрано из таблицы tools
  5. e.city - название поля, которое будет выбрано из таблицы product
  6. FROM - оператор указания источника данных
  7. delivery q - название таблицы, из которой будут выбираться данные
  8. tools w - название таблицы, связанной с первой таблицей по полю number_tools
  9. product e - название таблицы, связанной с первой таблицей по полю number_product
  10. WHERE - оператор условия выборки данных
  11. 1=1 - условие, которое всегда выполняется
  12. AND - логический оператор объединения условий
  13. w.number_tools=q.number_tools - условие связи записей по полю number_tools
  14. AND - логический оператор объединения условий
  15. e.number_product=q.number_product - условие связи записей по полю number_product
  16. AND - логический оператор объединения условий
  17. w.city=e.city - условие связи записей по полю city
  18. GROUP BY - оператор группировки данных
  19. ORDER BY - оператор сортировки данных
  20. LIMIT - оператор ограничения количества выводимых данных

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5