PHP + MySQL как приклеить значение таблицы (JOIN) по нескольким условиям?
Во-первых, можно сделать обычный запрос в стиле 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
SELECT p.price, p.model, 
 ( SELECT ps.price as sp_price
    FROM product_special AS ps
    WHERE NOW() BETWEEN ps.date_start AND ps.date_end
                 AND ps.product_id  = "'.$product_id.'"
    LIMIT 1
) as sp_price
FROM product as p
WHERE p.quantity > 0 AND p.product_id = "'.$product_id.'"
что-то такое... ?