我有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
所以我需要对每种类型的项进行计数,并在按计数对所有者进行不同的排序之后。
我不知道该怎么数这个订单。
预期-示例:
因此,如果对于类型I,选择对应于
name
的id 1
:'alpha'与
item_id
对应的Type
是:id 1
id
1,3,4
对应的1,3
项为1(count=2)。id
owner_id
对应的4
项为3(count=1)。所以结果(按顺序)将是
owner_id
最佳答案
你可以在下面试试-
DEMO
select d.name as ownername,count(distinct c.name) as itemcount from
Item_Type a
inner join Types b on a.type_id=b.id
inner join Item c on a.item_id=c.id
inner join Owner d on c.owner_id=d.id
group by d.name
关于sql - 具有3个实体,则根据其他2个实体的关系(数量)获得第三个实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54624734/