加入两个表,计数过高的SQL

时间:2015-11-02 04:24:57

标签: sql

我正在学习如何在SQL中加入和计算表,但我遇到了一些困难。每当我加入桌子时,当它不应该在第一位时,计数就会飙升。

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

条形表应该稍后用于比较使用“having”的“foo.bar”,但我正在努力修复此部分。

2 个答案:

答案 0 :(得分: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 :(得分:1)

你在问题​​中缺少很多信息(比如有多少行,预期数量等等)。但语法

from bar, foo

创建一个笛卡尔积,这意味着您可以获得两个表中的每个行组合。它将bar中的每一行与foo中的每一行组合在一起。

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

这在实践中非常罕见。你可能正在寻找像Juan建议的条件连接。