Я пытаюсь создать отдельный запрос, чтобы получить текущую цену и специальную цену продажи , если продажа выполняется ; Когда нет продажи, я хочу, чтобы store_picture_monthly_price_special.price AS special_price возвращался как null .
Перед добавлением 2-го условия WHERE запрос выполняется так, как я ожидаю: store_picture_monthly_price_special.price возвращает null , поскольку в настоящее время продажи не проводятся.
store_picture_monthly_reference | tenure | name | regular_price | special_price
3 | 12 | 12 Months | 299.99 | {Null}
2 | 3 | 3 Months | 79.99 | {Null}
1 | 1 | 1 Month | 29.99 | {Null}
pgSQL рассматривает второе WHERE условие как "все или ничего". Если продажи не ведутся, результатов нет.
Можно ли настроить этот запрос таким образом, чтобы я получал регулярную оценку каждый раз и специальную цену продажи либо в долларовом выражении, когда выполняется специальное предложение, либо возвращал ноль Это то, что я пытаюсь сделать, выполнено требуется подзапрос?
Это запрос, как у меня сейчас:
SELECT store_picture_monthly.reference AS store_picture_monthly_reference , store_picture_monthly.tenure , store_picture_monthly.name , store_picture_monthly_price_regular.price AS regular_price , store_picture_monthly_price_special.price AS special_price
FROM ( store_picture_monthly INNER JOIN store_picture_monthly_price_regular ON store_picture_monthly_price_regular.store_picture_monthly_reference = store_picture_monthly.reference )
FULL OUTER JOIN store_picture_monthly_price_special ON store_picture_monthly.reference = store_picture_monthly_price_special.store_picture_monthly_reference
WHERE
( store_picture_monthly_price_regular.effective_date < NOW() )
AND
( NOW() BETWEEN store_picture_monthly_price_special.begin_date AND store_picture_monthly_price_special.end_date )
GROUP BY store_picture_monthly.reference , store_picture_monthly_price_regular.price , store_picture_monthly_price_regular.effective_date , store_picture_monthly_price_special.price
ORDER BY store_picture_monthly_price_regular.effective_date DESC
Таблица " store_picture_monthly "
reference bigint,
name text,
description text,
tenure bigint,
available_date timestamp with time zone,
available_membership_reference bigint
Таблица store_picture_monthly_price_regular
reference bigint ,
store_picture_monthly_reference bigint,
effective_date timestamp with time zone,
price numeric(10,2),
membership_reference bigint
Таблица store_picture_monthly_price_special
reference bigint,
store_picture_monthly_reference bigint,
begin_date timestamp with time zone,
end_date timestamp with time zone,
price numeric(10,2),
created_date timestamp with time zone DEFAULT now(),
membership_reference bigint