【发布时间】:2018-11-01 10:13:27
【问题描述】:
我有一个表格,表示 Offer、Profiles 和 Skills 之间的三元关系。
任何给定的优惠都可以有多个个人资料,以及多个相关的技能。
类似这样的:
三元关系表
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 过滤时,它都不起作用。我总是在某处得到重复的条目。
【问题讨论】:
-
您提供来自一个表的数据,其中包含三列。然后你有一个语法不正确的查询,提到了另外两个表和其他列。我对你拥有什么以及你想做什么感到很困惑。
-
我将对其进行编辑以使其更清晰@GordonLinoff
-
对于那个示例输入,你想要什么输出?为什么报价表中完全相同的数据重复了 4 次?
-
子选择呢?
-
@MatBailie 我想要一个输出说明某个配置文件有多少报价:对于配置文件 1,有 2 个报价。不管有多少技能。报价表是一个快速制作的示例,我可以编辑更多随机数据,我以为我放了不同的 ID,什么没有。