Как я могу запросить мою запрашиваемую таблицу, чтобы она возвращала только самые последние - PullRequest
0 голосов
/ 11 ноября 2019

В MySQL я сделал запрос, который объединяет 3 таблицы (таблицу фильмов, таблицу инвентаря и таблицу проката), чтобы получить следующие результаты:

film_id | title    | inventory_id | store_id | rental_ date | return_date
1       | Dinosaur | 1            | 1        | 2018-08-01   | 2018-08-7
1       | Dinosaur | 1            | 1        | 2018-09-01   | 2018-09-12
1       | Dinosaur | 1            | 1        | 2019-10-12   | 2018-10-17
1       | Dinosaur | 2            | 1        | 2019-10-01   | 2018-10-18
1       | Dinosaur | 2            | 1        | 2018-12-01   | 2018-12-7
1       | Dinosaur | 3            | 1        | 2019-02-01   | 2018-02-16

Как я могу запросить мою запрашиваемую таблицу, чтобы она тольковозвращает самую последнюю дату return_date для каждого инвентаризационного идентификатора, поэтому у меня нет ненужных данных (в предыдущие даты один и тот же фильм был проверен и снят)?

1 Ответ

0 голосов
/ 11 ноября 2019

Из результатов вашего текущего запроса видно, что вы используете Пример базы данных MySQL Sakila .

Я думаю, что ваш текущий запрос:

select
    f.film_id,
    f.title,
    i.inventory_id,
    i.store_id,
    r.rental_date,
    r.return_date
from film f
inner join inventory i 
    on i.film_id = f.film_id
inner join rental r 
    on r.inventory_id = i.inventory_id

Для фильтрации по самым последним return_date каждого inventory_id вы можете использовать коррелированный подзапрос следующим образом:

select
    f.film_id,
    f.title,
    i.inventory_id,
    i.store_id,
    r.rental_date,
    r.return_date
from film f
inner join inventory i 
    on i.film_id = f.film_id
inner join rental r 
    on  r.inventory_id = i.inventory_id
    and r.return_date = (
        select max(r1.return_date)
        from rental r1 
        where on r1.inventory_id = r.inventory_id
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...