我正在学习有关SQL中的连接和计数表,但我遇到了一些困难。无论什么时候我加入桌子,当它不应该放在首位的时候,它的数量就会猛增。加入两个表,计数计数太高SQL
select foo.parts as foo_parts, count(foo.colours)
from bar, foo
group by foo.parts;
酒吧表应该用于以后使用“具有”比较“foo.bar”,但我工作的第一固定这一部分。
我正在学习有关SQL中的连接和计数表,但我遇到了一些困难。无论什么时候我加入桌子,当它不应该放在首位的时候,它的数量就会猛增。加入两个表,计数计数太高SQL
select foo.parts as foo_parts, count(foo.colours)
from bar, foo
group by foo.parts;
酒吧表应该用于以后使用“具有”比较“foo.bar”,但我工作的第一固定这一部分。
你可能缺少join
clausule
SELECT bar.id, foo.parts as foo_parts, count(foo.colours)
FROM bar
JOIN foo
ON bar.id = foo.id
group by bar.id, foo.parts;
你缺少了很多的问题的信息(例如,有多少行,预计数等等等等)。但语法
from bar, foo
创建一个笛卡尔乘积,这意味着你会得到两个表中各行的每一组合。它将条形图中的每一行与foo中的每一行相结合。
所以预期的计数是count(bar)* count(foo)。
这在实践中非常罕见。你可能正在寻找像Juan这样有条件的加入。
显示您的架构。 bar和foo表的结构是什么? – Adish
这是跨连接,也是你永远不应该使用隐式连接的主要原因之一。请停止使用20年前更换的这种技术。 – HLGEM