2016-06-01 14 views
0

Ich bin 2 Abfragen für eine Tabelle ausgeführt, beide sind die gleichen in "Where" -Klausel, so glaube ich, sie sollten die gleichen Werte zurückgeben.Join Abfrage auf Tabellen

Meine erste Frage ist:

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' 

und es gibt 61 Zeilen.

Die zweite Abfrage:

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

diese liefert 122 Zeilen.

Die zweite Abfrage gibt immer doppelte Zeilen als die erste zurück, auch wenn ich die Bedingung ändere. Irgendeine Idee??

+0

In Ihrer zweiten Abfrage, ist Ihr Tabellenname so lange? –

+0

, die versehentlich eingegeben wurde, korrigiere ich es, immer noch das gleiche Ergebnis. – Naqme

+0

Ein weiterer Grund, warum EAV-Schema ist problematisch. –

Antwort

0

Ich schlage vor, eine JOIN auf einmal fallen zu lassen, bis Sie die eine Ursache dafür erreichen.

Dies ist nicht seltsam, sein normales Verhalten, Sie sind 7 verschiedenen Tabellen beitreten, wenn irgendeine Bedingung auf alle diese 7 Tabellen falsch sein wird, dann würde der Datensatz gefiltert werden!

+0

Danke für Ihren Kommentar, es war nützlich. Ich verstehe den Beitritt mit B1 und B5 verursachen das Problem, aber ich verstehe immer noch nicht den Grund! – Naqme

+0

@Naqme Wenn 'B1' und' B5' das Problem verursachen, bedeutet dies, dass 'B1' nicht alle' B' 'NameDastgahID' enthält, und' B5' nicht alle 'B'' ShahrID' – sagi

+1

Jawohl! Nach dem Überprüfen der Daten verstehe ich das Problem. Es machte mich verrückt, endlich konnte ich es lösen. Danke vielmals :) – Naqme