SELECT CONCAT('Город ', LOWER(s.town), ': ', UPPER(s.name), '(', s.reiting, ')') FROM s # 1. Получаем множество поставщиков, выполнивших поставки из Рима # SELECT DISTINCT s.n_post # FROM s # JOIN spj ON s.n_post = spj.n_post # JOIN p ON p.n_det = spj.n_det # WHERE p.town = 'Рим' # # 2. Считаем сколько поставщиков в заданном множестве (т.е. поставляли детали из рима) # Просто добавляем COUNT # SELECT p.n_izd, COUNT(DISTINCT s.n_post) # FROM s # JOIN spj ON s.n_post = spj.n_post # JOIN p ON p.n_det = spj.n_det # WHERE p.town = 'Рим' # Получили информацию о том, что детали из Рима поставляли 4 поставщика # # 3. Находим номера деталей, которые поставлял хотя бы один поставщик из пункта 1) # (Потом для этих деталей подсчитаем кол-во поставщиков и добавим условие HAVING COUNT = 4) #SELECT DISTINCT p.n_det #FROM p #JOIN spj ON p.n_det = spj.n_det #WHERE spj.n_post IN ( # SELECT DISTINCT s.n_post # FROM s # JOIN spj ON s.n_post = spj.n_post # JOIN p ON p.n_det = spj.n_det # WHERE p.town = 'Рим') # Получили все детали # # 4. Получаем количество поставщиков, которые поставляли каждую деталь (из пункта выше) # Просто добавляем COUNT и GROUP BY #SELECT p.n_det, COUNT(DISTINCT spj.n_post) AS count #FROM p #JOIN spj ON p.n_det = spj.n_det #WHERE spj.n_post IN ( # SELECT DISTINCT s.n_post # FROM s # JOIN spj ON s.n_post = spj.n_post # JOIN p ON p.n_det = spj.n_det # WHERE p.town = 'Рим') #GROUP BY p.n_det # # 5. Добавляем условие: чтобы кол-во из п. 4 было равно кол-во из п. 2 SELECT p.n_det FROM p JOIN spj ON p.n_det = spj.n_det WHERE spj.n_post IN ( SELECT DISTINCT s.n_post FROM s JOIN spj ON s.n_post = spj.n_post JOIN p ON p.n_det = spj.n_det WHERE p.town = 'Рим') GROUP BY p.n_det HAVING COUNT(DISTINCT spj.n_post)=( SELECT COUNT(DISTINCT spj.n_post) FROM p JOIN spj ON p.n_det = spj.n_det WHERE spj.n_post IN ( SELECT DISTINCT s.n_post FROM s JOIN spj ON s.n_post = spj.n_post JOIN p ON p.n_det = spj.n_det WHERE p.town = 'Рим') ) ORDER BY p.n_det SELECT CONCAT('Город ', LOWER(s.town), ': ', UPPER(s.name), '(', s.reiting, ')') FROM "pmib6104".s