Выдать номера и фамилии поставщиков, поставляющих детали для какого-либо изделия с деталью P1 в количестве, б - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет! Суть в следующем: есть 4 таблицы поставщики S S1 Смит 20 Лондон S2 Джонс 10 Париж S3 Блейк 30 Париж S4 Кларк 20 Лондон S5 Адамс 30 Афины детали P P1 Гайка Красный 12 Лондон P2 Болт Зеленый 17 Париж P3 Винт Голубой 17 Рим P4 Винт Красный 14 Лондон P5 Кулачок Голубой 12 Париж P6 Блюм Красный 19 Лондон изделия J J1;Жесткий диск;Париж J2;Перфоратор;Рим J3;Считыватель;Афины J4;Принтер;Афины J5;Флоппи-диск;Лондон J6;Терминал;Осло J7;Лента;Лондон поставки SPJ S1 P1 J1 200 S1 P1 J4 700 S2 P3 J1 400 S2 P3 J2 200 S2 P3 J3 200 S2 P3 J4 500 S2 P3 J5 600 S2 P3 J6 400 S2 P3 J7 800 S2 P5 J2 100 S3 P3 J1 200 S3 P4 J2 500 S4 P6 J3 300 S4 P6 J7 300 S5 P2 J2 200 S5 P2 J4 100 S5 P5 J5 500 S5 P5 J7 100 S5 P6 J2 200 S5 P1 J4 100 S5 P3 J4 200 S5 P4 J4 800 S5 P5 J4 400 S5 P6 J4 500 нужно выполнить один единственный запрос: Выдать номера и фамилии поставщиков, поставляющих детали для какого-либо изделия с деталью P1 в количестве, большем, чем сред-ний объем поставок детали P1 для этого изделия. пробывал так:
SELECT s.snum
FROM s, j INNER JOIN spj ON j.jnum = spj.jnum INNER JOIN p ON spj.pnum = p.pnum;
WHERE j.Jnum = spj.jnum AND p.pnum = 'Р1';
 
и вот так тоже пробывал
SELECT snam, snum FROM s WHERE snum =(
SELECT snum FROM SPJ as t1 WHERE t1.Pnum = 'P1'
AND t1.qt = (SELECT AVG(t1.qt) FROM SPJ as t2));
WHERE t2.pnum = 'Р1' AND t2.Jnum = t1.jnum));
но выдаёт что нет записей. Заранее благодарен все за помощь.

Решение задачи: «Выдать номера и фамилии поставщиков, поставляющих детали для какого-либо изделия с деталью P1 в количестве, б»

textual
Листинг программы
-- Выдать номера и фамилии поставщиков, 
-- поставляющих детали для какого-либо изделия с деталью P1 
-- в количестве, большем, 
-- чем сред-ний объем поставок детали P1 для этого изделия.
select Snum, Snam
from (
  select distinct Snum dSnum
  from (
    select Jnum, Snum, Pnum, sum(Qt)sumQt, avgQtP1
    from(
      select Jnum JnumP1, avg(Qt)avgQtP1
      from SPJ
      where Pnum='P1'
      group by Jnum
      )q
    join SPJ on Jnum=JnumP1
    group by Jnum, Snum, Pnum
    having sumQt>avgQtP1
    )sq
  )d
join s on Snum=dSnum;

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


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

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

10   голосов , оценка 3.9 из 5
Похожие ответы