Данные из 2 таблиц - PullRequest
       2

Данные из 2 таблиц

1 голос
/ 05 января 2012

есть две таблицы:

СТОЛ машины

id | date
----------
1 | 2012-01-04
2 | 2012-01-04
3 | 2012-01-05

ТАБЛИЦА версии

id_car | year | author
-------------------------
1 | 2005 | John
1 | 2001 | Carl

2 | 2003 | Carl
2 | 2001 | John

3 | 2004 | Carl
3 | 2003 | John

Мне нужночтобы получить всю информацию об автомобилях со вчерашней датой (2012-01-04) и информацию об их последней версии, если автор Carl.

Так что в этом примере мне нужно получить: 2 |2012-01-04 |2003 |Карл

1 Ответ

5 голосов
/ 05 января 2012

Вы хотите inner join:

select
    c.id,
    c.date,
    v.year,
    v.author
from
   cars c
   inner join versions v on
       c.id = v.id_car
   inner join (
        select 
            id_car, 
            max(year) as latestYear 
        from 
            versions 
        group by 
            id_car
    ) vmax on
       c.id = vmax.id_car
       and v.year = vmax.latestYear
where
   v.author = 'Carl'
   and c.date = '2012-01-04'

В этом запросе вы говорите: «Возьми меня с cars, где дата 2012-01-04, а затем найди все в versions где id_car столбец равен моему id столбцу в cars. О, и дайте мне только что-нибудь из versions, где автор Carl, но только там, где год автомобиля равенсамый лучший год автомобиля, который доступен. "

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