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