2016-06-01 34 views
0

我在表上運行2個查詢,它們在「Where」子句中都是相同的,所以我相信它們應該返回相同的值。在表上加入查詢

我的第一個查詢是:

select B.NameDastgahID, B.ZarfiateHamleBar, B.SherkateSazande, B.BisimHF, B.KanalBisimKhodroyi, B.ShomarePelak, B1.NameDastgahTitle, B2.NameKhodroTitle, B3.NoeKhodroTitle, B4.KarbarieKhodroTitle, B5.ShahreKhodroTitle, B6.cheraghgardanValue, B7.bisimHFTitle 
from dw.bohran_fct_etelaatenavegankhodroyi B 
INNER JOIN dw.excel_dim_namedastgah B1 using (NameDastgahID) 
INNER JOIN dw.excel_dim_namekhodro B2 using (NameKhodroID) 
INNER JOIN dw.excel_dim_noekhodro B3 using (NoeNavganID) 
INNER JOIN dw.excel_dim_karbariekhodro B4 using (KarbariID) 
INNER JOIN dw.excel_dim_shahrekhodro B5 using (ShahrID) 
INNER JOIN dw.excel_dim_cheraghgardan B6 using (CheraghGardan) 
INNER JOIN dw.excel_dim_bisimhf B7 using (bisimHF) 
where NameKhodroID = '630' 

,並返回61行。

第二個查詢:

select * 
from dw.bohran_fct_etelaatenavegankhodroyi 
where NameKhodroID = '630' 

這將返回122行。

即使在更改條件時,第二個查詢總是返回比第一個更多的雙行。任何想法??

+0

在你的第二個查詢中,你的表名是sooo long? –

+0

這是錯誤輸入,我糾正它,仍然是相同的結果。 – Naqme

+0

EAV模式的另一個原因是有問題的。 –

回答

0

我會建議一次放下一個JOIN,直到達到引發此的一個。

這並不奇怪,它的正常行爲,你加入到7個不同的表中,如果這7個表中的任何一個條件都不正確,那麼記錄將被過濾!

+0

感謝您的評論,它很有用。我明白加入B1和B5會導致問題,但我仍然不明白原因! – Naqme

+0

@Naqme如果'B1'和'B5'引起問題,則意味着'B1'不具有全部'B'' NameDastgahID','B5'''沒有全部'B'' ShahrID' – sagi

+1

Yeesss!在檢查數據後,我明白了這個問題。這讓我發瘋,最後我可以解決它。非常感謝 :) – Naqme