2017-11-28 2 views
0

Ich versuche, zwei Tabellen zu verbinden und die Gesamtzahl der Datensätze, aber die erste Tabelle muss eine WHERE-Bedingung haben, um Tausende von Datensätzen zuerst aussortieren. Die erste Tabelle hat den Alias ​​'Poly_NoRoad' und die zweite Tabelle hat den Alias ​​'Vri'.Joining zwei Tabellen - eine mit einer Auswahl, eine unberührte

Ich habe versucht, die erste Tabellenauswahl zu verschachteln (wo ich Datensätze basierend auf verschiedenen Not Like Kriterien aussortiere, um mit einer reduzierten 'Poly_NoRoad' Tabelle zu enden) und dann die Ergebnisse dieser Auswahl mit dem 'Vri' Tabelle.

OPENING_ID ist ein gemeinsames Feld in beiden Tabellen.

Was mache ich hier falsch?

Select count(*) 
From 
    (Select * 
    From Whse_Forest_Vegetation.Rslt_Forest_Cover_Poly Poly_Noroad 
    Where Upper(Poly_Noroad.Silv_Polygon_No) Not Like 'PAS%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%WTR%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%WTP%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%RD%' 
    And Upper (Poly_Noroad.Silv_Polygon_No) Not Like 'RES%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%ROAD%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%LANDING%') 

Join Whse_Forest_Vegetation.Veg_Comp_Lyr_R1_Poly Vri 
On Poly_Noroad.Opening_Id = Vri.Opening_Id 
+2

Was genau ist das Problem? Erhalten Sie einen Fehler? Die falschen Ergebnisse? – Mureinik

+0

Ihre Unterabfrage ist kein Alias. 'SELECT COUNT (*) VON (...) AS Poly_Noroad JOIN ...' – zambonee

+0

Das Problem ist, ich bekam einen Fehler, und die Lösungen von @a_horse_with_no_name behebt das Problem. – grego

Antwort

1

Sie müssen dieser abgeleiteten Tabelle ("sub-select") einen Alias ​​geben, sonst können Sie nicht mit ihr verbunden werden. Der Alias ​​innerhalb der abgeleiteten Tabelle ist nicht sichtbar auf der Außenseite.

Select count(*) 
From (
    Select * 
    From Whse_Forest_Vegetation.Rslt_Forest_Cover_Poly Poly_Noroad 
    Where Upper(Poly_Noroad.Silv_Polygon_No) Not Like 'PAS%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%WTR%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%WTP%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%RD%' 
    And Upper (Poly_Noroad.Silv_Polygon_No) Not Like 'RES%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%ROAD%' 
    And Upper(Poly_Noroad.Silv_Polygon_No) Not Like '%LANDING%' 
) t --<< an alias for the derived table 
    Join Whse_Forest_Vegetation.Veg_Comp_Lyr_R1_Poly Vri 
    On t.Opening_Id = Vri.Opening_Id; 
     ^
     You need to use the alias of the derived table.