Join 出于某种原因,多对多选择被分成多行

Join 出于某种原因,多对多选择被分成多行,join,select,many-to-many,firebird,Join,Select,Many To Many,Firebird,在多对多关系中,我有两个表通过第三个表连接。要简化: 表A ID-A(内部) 名称(varchar) 分数(数字) 表B ID-B(内部) 名称(varchar) 表AB ID-AB(int) A(外键ID-A) B(外键ID-B) 我想要的是显示B名称和属于给定B的所有a的“分数”值之和。但是,以下代码: WITH "Data" AS( SELECT "B."."Name" As "BName", "A"."Name", "Score" FROM "AB" LEFT OUTER JOIN "A

在多对多关系中,我有两个表通过第三个表连接。要简化:

表A ID-A(内部) 名称(varchar) 分数(数字)

表B ID-B(内部) 名称(varchar)

表AB ID-AB(int) A(外键ID-A) B(外键ID-B)

我想要的是显示B名称和属于给定B的所有a的“分数”值之和。但是,以下代码:

WITH "Data" AS(
SELECT "B."."Name" As "BName", "A"."Name", "Score"
FROM "AB"
LEFT OUTER JOIN "A" ON "AB"."A" = "A"."ID-A"
LEFT OUTER JOIN "B" ON "AB"."B" = "B"."ID-B")

SELECT "BName", SUM("Score") AS "Total"
FROM "Data"
GROUP BY "Name", "Score"
ORDER BY "Total" DESC
结果显示了每个“BName”的几行,“score”在这些行之间被划分为非常随机的增量。例如,如果Johnny的期望结果是12,而April的期望结果是25,则查询可能会显示如下内容:

约翰尼| 7

约翰尼| 3

约翰尼| 2

4月19日

4月5日

四月一日

等等


即使尝试嵌套查询并使用SUM进行另一次选择(“Score”),结果也是一样的。我不确定我做错了什么?

分组依据
子句中删除
得分

SELECT BName, SUM(Score) AS Total
FROM Data
GROUP BY BName
ORDER BY Total DESC;

查询的目的是按名称进行汇总,因此在
GROUPBY
子句中应该只显示名称。通过包含分数,您将在输出中获得每个唯一名称/分数组合的记录。

好的,我解决了我的问题。事实上,我只能按“名字”分组,但我认为Firebird不允许我这么做。结果只是一个打字错误。哎呀。

在组员中没有“分数”,Firebird向我抛出了一个错误,说我不能使用SUM。哎呀!我的错误,修正@eworm似乎不太可能“DBMS”在组中没有“Score”向我抛出一个错误,说我不能使用SUM。鉴于我说的基本相同,你能将我的答案标记为正确吗?可能更有用的是指定键入错误是什么。A包括DBMS(带版本),一个清晰的规范,剪切粘贴和可运行的代码(带有小的代表性输入)(将表格初始化设置为表格格式)和可扩散的(因此是有序的)所需输出。但调试的绝对基础是:显示程序在运行时做了预期的事情(sub)通过说出它是什么来表达,并通过增量输出显示它实际上是这样做的。在添加无法修复的问题代码时,研究(手册和web)。重复,尽量减少工作和错误代码。然后重新询问工作和非工作示例之间的(小)差异。