Для следующих примеров моделей / таблиц данных: (для краткости указано в псевдо-Ruby / Rails)
class User
has_many :orders
end
class Order
has_and_belongs_to_many :products
ordered_at :timestamp
end
class Product
name :string
price :decimal
end
(и каждая из этих таблицтакже имеет уникальное поле идентификатора 'id', которое является его первичным ключом, и таблица соединений, соединяющая Order
и Product
также существует)
Я хотел бы выбрать всех пользователей, для которых, например, их Самый старый Заказ (с самым ранним ordered_at
), содержит более n продуктов.
Как это можно сделать?
Что я пробовалдо сих пор: я попытался использовать JOIN
, но затем мы в итоге посмотрим все ордера, а не только самые старые.Я также пытался использовать DISTINCT
/ DISTINCT ON
, но я не представляю, как это правильно сочетать с (а) выбором пользователей и (б) проверкой количества всех связанных продуктов.
Я использую Postgres, но если существует независимый от DB ответ на SQL, это также будет высоко оценено.