2015-11-02 87 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這樣有條件的加入。