2015-09-14 36 views
1

我的理解是,內部連接應該採用具有相同鍵的A和B的交集,所以交集中結果的數量永遠不會超過A或B.但是,我運行了一個豬腳本,它應該默認情況下執行一個內部連接,這表明交叉點比A或B有更多的結果。可能導致這種情況的原因是什麼?爲什麼A和B的內部連接會產生比A或B更多的結果?

OLD_count = FOREACH (GROUP OLD ALL) GENERATE COUNT(OLD); 
NEW_count = FOREACH (GROUP NEW ALL) GENERATE COUNT(NEW); 

G = JOIN NEW BY (X, Y), OLD by (X, Y); 
JOIN_count = FOREACH (GROUP G ALL) GENERATE COUNT(G); 

DUMP OLD_count; 
DUMP NEW_count; 
DUMP JOIN_count; 

-- Results (approximate): 
-- (70000000) 
-- (80000000) 
-- (85000000) wtf? 
+2

如果你對你在兩個表中加入的值有不同的看法,你可以得到更多的行。 –

+0

從兩個表之間的內部聯接返回的行數可以在0到(table1上的行數* table2上的行數) –

+0

@ConradFrix謝謝,就是這樣。 –

回答

2

隨着加入,你會得到一個結果,每組合,因此,如果一個以上的加入給定對象而成,它將被多次返回。

考慮2位老師和3位學生,每位老師教授每個學生。有5(2 + 3)個實體,但是如果你是通過他們的關係加入這兩個組,那麼將會有結果。

相關問題