Во-первых, можно сделать обычный запрос в стиле
SELECT p.*, ps.price as special_price FROM product p
LEFT JOIN product_special ps ON p.id = ps.product_id
и разруливать то, что вам нужно (проверять, есть ли акция) уже в коде вашего приложения.
Во-вторых, можно соорудить что-то типа:
SELECT p.id,
IF (ps.price IS NOT NULL AND ps.date_start < NOW() AND ps.date_end > NOW() , ps.price, p.price) as price FROM product p
LEFT JOIN product_special ps ON p.id = ps.product_id
Как пример - если акция задана, мы получим цену с акцией, если нет - цену из product.price