I, too, think this is homework, so I can't directly give you the answer.
But I can tell you, you're very close already! You've already done the hard part, using HAVING. You just need to add "AND" your new condition to the HAVING [In my view, you need HAVING here, not WHERE]:
SELECT maker
FROM Product
GROUP BY maker
HAVING COUNT(model) > 1 AND ?add_something_here?
Final hint: Look at all the options you have when using COUNT.
Nicely done! Just one final "trick" to select the type. Since we know there's only one type anyway, it doesn't matter whether you list min or max, take your pick.
SELECT maker, min(type) as type
FROM Product
GROUP BY maker
HAVING COUNT(model) > 1 and count(distinct type) = 1
Thank you very much! I tried this one and got it working.
select distinct p1.maker, p1.type from Product p1
inner join
(SELECT p1.maker
FROM Product p1
GROUP BY p1.maker
HAVING COUNT(p1.model) > 1 and count(distinct p1.type) = 1)p3
on p1.maker = p3.maker