Никак не могу понять, как можно выбрать значение в иной таблице по нескольким условиям.
Ситуация такая: осуществляется выбор данных 1 продукта:
SELECT p.price, p.model, p.image
FROM product AS p ...
Необходимо приклеить таблицу с спецценами по акции. В ней несколько значений: ID продукта, цена, дата начала акции, дата конца акции. Необходимо взять значение (если оно имеется) из этой таблицы где ID продукта равно ID продукта акций.
SELECT p.price, p.model, p.image, ps.price as sp_price
FROM product AS p
LEFT JOIN product_special as ps USING (product_id)
Но. Отсеять необходимо как по ID продукта, так и по началу/концу акции. Я внес дополнительные условия в WHERE
SELECT p.price, p.model, p.image, ps.price as sp_price
FROM product AS p
LEFT JOIN product_special as ps USING (product_id)
WHERE p.quantity > 0 AND p.product_id = "'.$product_id.'" AND ((ps.date_start < NOW()) AND ( ps.date_end > NOW())) LIMIT 1
И потом на PHP проверяю, если sp_price не пуст, то выводить price. Условия работают только при прохождении акции, а при ее отсутствии запрос валится, так как парсер не находит ячейки с подходящей акцией и вообще выдает нулевое значение.
Я уже понял, что условия получились глупые, и так и должно быть, но как это можно вообще осуществить? В JOIN дополнительные условия через ON прописать, как я понял нельзя, а в WHERE вписываются общие условия и при отсутствии нужного результата скрывают вообще все запросы.