A simple way would be to get both at once, of course you'll get a null value if no user price exists for that user:
SELECT p1.*, p2.price AS null_price, p3.price AS user_price
FROM `products` p1
JOIN `prices` p2 ON p1.id = p2.product_id AND `p2.user_id` IS NULL
LEFT JOIN `prices` p3 ON p1.id = p3.product_id AND `p3.user_id` = 3
Then use whatever programming language you are using to determine if the field is null, and which price to use.