所以我要在Postgresql中解决这个问题,对于用户提供的给定数量的classId,我必须返回所述类的公共属性。
我有三个表来表示模型(一个类有多个属性,一个属性可以在很多类中)
表类:
---------------------------
| Id | Name | Description |
---------------------------
表格属性:
---------------------------
| Id | Name | Description |
---------------------------
最后表ClassProperties
------------------------
| ClassId | PropertyId |
------------------------
所以用户给了我一个包含classIds的数组,我必须返回所有类的所有常用属性(如上所述)
截至目前,我只能使用以下代码返回所有类的所有属性:
select p.*
from properties as p
inner join ClassProperties as cp on cp.propertyid= p.id
where cp.classid = any ('{88d5fe8f-e19e-40b4-bc65-83ac64f825b0, a2a63bea-
aeee-4d3b-817e-cc635383c571}') ;
你可以看到的ids是Guid,但这确实无关紧要。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
您可以这样做:
select p.*
from properties p inner join
ClassProperties cp
on cp.propertyid = p.id
where cp.classid = any ('{88d5fe8f-e19e-40b4-bc65-83ac64f825b0, a2a63bea-aeee-4d3b-817e-cc635383c571}')
group by p.id
having count(*) = 2;
如果允许重复,则count(*)
应为count(distinct classid)
。
注意:值" 2"是您要检查的元素数量。您也可以使用array_length('{88d5fe8f-e19e-40b4-bc65-83ac64f825b0, a2a63bea-aeee-4d3b-817e-cc635383c571}')
。