gpt4 book ai didi

sql - 有 3 个实体,根据其他 2 个实体的关系数(计数)得到第三个实体

转载 作者:行者123 更新时间:2023-11-29 14:28:54 24 4
gpt4 key购买 nike

我有 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 之间存在多对多关系。一个Item可以有多个Type,一个Type可以有多个Item

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

所以我需要对每个类型的项目进行计数,然后根据计数对 Owners DISTINCT 进行排序。

我不知道如何按计数处理这个订单。

预期 - 示例:

因此,如果我为类型选择 name : 'alpha' 对应于 id 1

id为1Type对应的item_id为:1,3,4

id为1,3的Item(s)对应owner_id为1(count=2)。id为4的Item对应的owner_id为3(count=1)

所以结果(按顺序)将是 owner1, owner3

最佳答案

你可以试试下面-

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com