Красноречивая сортировка по значению столбца - PullRequest
1 голос
/ 09 июня 2019

У меня есть таблица цен на товары со следующими столбцами

product_id, seller_id, original_price, sale_price, sale_start_date, sale_end_date

Я хочу отсортировать таблицу по эффективной цене в asc.

Эффективная цена может быть original_price или sale_price, если она не равна нулюи текущая дата находится между начальной и конечной датой.

Если у кого-то есть решение, пожалуйста, объясните решение, так как я не очень силен в SQL и пытаюсь научиться

1 Ответ

1 голос
/ 09 июня 2019

Этого можно добиться, выбрав effective_price в качестве агрегата и упорядочив по нему.Например:

select
    *,
    if (
        sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
        sale_price,
        original_price
    ) as effective_price
from product_price
order by effective_price asc

Или через eloquent:

ProductPrice::selectRaw('
    *,
    if (
        sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
        sale_price,
        original_price
    ) as effective_price
')->orderBy('effective_price')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...