Сортировать в базе данных доступа - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь отсортировать доступ к базе данных, но не могу. Мне нужно использовать только записи за последний день. Сначала город с самой низкой ценой и всеми ценами этого города, затем город со второй самой низкой ценой и т. Д. c. Спасибо !!

Это пример базы данных:

Date           Country    City     Price    Departure_date     Return_date
05-06-2019     Peru       Lima     360$     xxxx               xxxxx
05-06-2019     Peru       Lima     420$     xxxx               xxxxx
05-06-2019     Mexico     CMX      300$     xxxx               xxxxx
05-06-2019     Mexico     CMX      400$     xxxx               xxxxx
05-06-2019     Mexico     Cancun   350$     xxxx               xxxxx
05-06-2019     Mexico     Cancun   500$     xxxx               xxxxx
05-06-2019     Peru       Cusco    50$      xxxx               xxxxx
05-06-2019     Peru       Cusco    60$      xxxx               xxxxx
04-06-2017     Mexico     Cancun   300$     xxxx               xxxxx
04-06-2017     Peru       Cusco    70$      xxxx               xxxxx
04-06-2017     Peru       Cusco    30$      xxxx               xxxxx

Ее нужно отсортировать следующим образом:

Date         Country    City     Price    Departure_date     Return_date
05-06-2019   Peru       Cusco    50$      xxxx               xxxxx
05-06-2019   Peru       Cusco    60$      xxxx               xxxxx
05-06-2019   Mexico     CMX      300$     xxxx               xxxxx
05-06-2019   Mexico     CMX      400$     xxxx               xxxxx
05-06-2019   Mexico     Cancun   350$     xxxx               xxxxx
05-06-2019   Mexico     Cancun   500$     xxxx               xxxxx
05-06-2019   Peru       Lima     360$     xxxx               xxxxx
05-06-2019   Peru       Lima     420$     xxxx               xxxxx

1 Ответ

1 голос
/ 29 мая 2020

Вероятно, есть способ сжать это, но следующее должно выполняться по мере необходимости:

select t0.*
from 
    YourTable t0 inner join
    (
        select t1.city, t1.date, min(t1.price) as mprice
        from 
            YourTable t1 inner join
            (
                select t2.city, max(t2.date) as mdate
                from YourTable t2
                group by t2.city
            ) t3 
            on t1.date = t3.mdate and t1.city = t3.city
        group by 
            t1.city, t1.date
    ) t4 
    on t0.city = t4.city and t0.date = t4.date
order by 
    t4.mprice, t0.city, t0.price

По сути:

  • Самый внутренний подзапрос (t3) получает записи для каждого города с самой последней датой (mdate).
  • Внешний подзапрос (t4) получает минимальную цену (mprice) в наборе последних записей для каждого города.
  • Наконец, основной запрос выводит соответствующие записи с сортировкой по минимальной цене (для сортировки групп городов), затем по city (для сортировки городов с одинаковым минимумом), а затем по price по сортировать записи в каждой группе городов.

Вам нужно будет заменить все вхождения YourTable на имя вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...