25.04.2012, 16:04
Если писать строго по SQL92 и выкинуть неиспользуемые поля, то запрос будет выглядеть так
SELECT AVG(a.price)
FROM (
SELECT pc.price as price
FROM pc as pc
WHERE pc.model IN (
SELECT product.model
FROM product as product
WHERE product.maker='a'
)
UNION ALL
SELECT laptop.price
FROM laptop as laptop
WHERE laptop.model IN (
SELECT product.model
FROM product as product
WHERE product.maker='a'
)
) as a
По результату запроса ты не можешь судить о том откуда взята цена из первого или второго подзапроса. Только если исполнишь его отдельно
SELECT code, price, laptop.model, ram, hd
FROM laptop
WHERE model IN (
SELECT model
FROM product
WHERE maker='a'
)
Вполне логично что второй запрос в объединении что-то возвращает. Почему бы в таблице laptop и не быть продуктам, производителя "a"?
И ещё. Обрати внимание на UNION
ALL. Почитай чем отличается UNION от UNION ALL . Может быть в задании имеется в виду именно это различие?