Учитывая простую ассоциацию Book / Shop, как указано ниже, и при условии, что Book имеет published_on
Date.
class Shop
has_many :books
end
class Book
belongs_to: shop
end
Как бы вы создали запрос PostgreSQL, который возвращает все книги, для которых самые старые опубликованы длямагазин, к которому они принадлежат.
Так что, если у вас есть этот набор данных (формат даты ГГГГ-ММ-ДД):
- Магазин A:
- Книга А1 - опубликовано: 2019-01-01
- Книга А2 - опубликовано_: 2019-02-01
- Книга А3 - опубликовано: 2019-03-01
- Магазин B:
- Книга B1 - опубликовано: 2019-04-01
- Книга B2 - опубликовано: 2019-04-01
- Книга B3 - опубликовано: 2019-05-01
- Магазин C:
- Книга C1 - опубликовано: 2019-02-01
- Книга C1 - опубликовано: 2019-06-01
Возвращается:
- Книга А1 - опубликовано: 2019-01-01
- Книга В1 - опубликовано: 2019-04-01
- Книга В2 - опубликовано: 2019-04-01
- Книга С1 - опубликованоhed_on: 2019-02-01
Я знаю, как получить все published_on
даты по магазинам:
Book.select('shop_id, min(published_on) as min_pub').group(:shop_id)
Но я не уверен, куда идти дальше, илиесли это даже полезно.