2015-11-02 94 views
0

我正在学习有关SQL中的连接和计数表,但我遇到了一些困难。无论什么时候我加入桌子,当它不应该放在首位的时候,它的数量就会猛增。加入两个表,计数计数太高SQL

select foo.parts as foo_parts, count(foo.colours) 
from bar, foo 
group by foo.parts; 

酒吧表应该用于以后使用“具有”比较“foo.bar”,但我工作的第一固定这一部分。

+1

显示您的架构。 bar和foo表的结构是什么? – Adish

+0

这是跨连接,也是你永远不应该使用隐式连接的主要原因之一。请停止使用20年前更换的这种技术。 – HLGEM

回答

2

你可能缺少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; 
1

你缺少了很多的问题的信息(例如,有多少行,预计数等等等等)。但语法

from bar, foo

创建一个笛卡尔乘积,这意味着你会得到两个表中各行的每一组合。它将条形图中的每一行与foo中的每一行相结合。

所以预期的计数是count(bar)* count(foo)。

这在实践中非常罕见。你可能正在寻找像Juan这样有条件的加入。