У меня есть 3 сущности, тип, предмет, владелец
владелец
id name
1 owner1
2 owner2
3 owner3
Владелец может иметь несколько предметов
Item
id name owner_id
1 item1 1
2 item2 1
3 item3 1
4 item4 3
5 item5 2
Type
id name
1 alpha
2 beta
Существует много ко многимОтношения между Предметом и Типом.Элемент может иметь несколько типов, а тип может иметь несколько элементов.
Item_Type
id item_id type_id
1 1 1
2 1 2
3 3 1
4 4 1
. Принимая тип по имени, мне нужно получить всех владельцев, имеющих элемент этого типа, упорядоченных по количеству элементов в типе.,
Я использую PostgreSQL 10.
Итак, я начинаю с:
SELECT Type.name, Item_Type.item_id from Type WHERE Type.name = 'my_var' INNER JOIN Item_Type ON Type.id = Item_Type.type_id
Так что мне нужно посчитать Item для каждого типа, и после получения DISTINCT владельцев, упорядоченного пососчитать.
Я не знаю, как подойти к этому порядку по количеству.
Ожидается - Пример:
Итак, если для Типа I выберите name
: 'alpha', что соответствует id 1
item_id
, соответствующие Type
с id 1
: 1,3,4
Элемент (ы) с идентификатором 1,3
, соответствующий owner_id
, равен 1 (количество = 2).Элемент с идентификатором 4
, соответствующим owner_id
, равен 3 (количество = 1).
Таким образом, результат (по порядку) будет owner1, owner3