我有一个表,表示提供、配置文件和技能之间的三元关系。
任何给定的提议都可以有多个简档和多个关联的技能。
如下所示:
ternary_relationship表
id_Offer - id_Profile - id_Skill
1 - 1 - 1
1 - 1 - 2
1 - 1 - 3
1 - 2 - 1
2 - 1 - 1
2 - 1 - 2
2 - 1 - 3
2 - 2 - 1优惠表格
Offer - business_name
1 - business-1
1 - business-1
1 - business-1
1 - business-1
2 - business-2
2 - business-2
2 - business-2
2 - business-2 我想通过配置文件进行查询过滤,并且只计算一次报价,无论它关联了多少技能。
我正在执行类似以下查询的操作:
SELECT business_name, COUNT(*)
FROM Offer INNER JOIN
ternary_relationship
ON Offer.id_Offer = ternary_relationship.id_Offer AND
id_Profile = '1'
GROUP BY business_name
ORDER BY COUNT(*) DESC;我见过several possible解决方案,但我不能让任何人为我的案例工作。当我为两个id_Offer命名分组时,或者当我只按id_Offer过滤时,它也不工作。我总是在某个地方得到重复的条目。
发布于 2018-05-22 23:28:38
您可以使用DISTINCT执行JOINS,只需使用一次
select o.business_name, count(distinct tr.id_Offer) counts
from Offer o inner join
ternary_relationship tr on
o.Offer = tr.id_Offer
where tr.id_Profile = ?
group by o.business_name
order by 2 desc;https://stackoverflow.com/questions/50471137
复制相似问题