Postgresql
Postgres/PostGIS 正在從不存在的表中返回數據(我是新手——告訴我為什麼我錯了)
我正在關注PostGIS 的教程。我已將所有範例數據集(所有 shapefile)上傳到 PostgreSQL 數據庫中,儘管我修改了名稱,因此它們與教程中的名稱並不完全匹配。然後我從教程中執行了以下程式碼:
df = pd.read_sql_query(''' SELECT subways.name AS subway_name, neighborhoods.name AS neighborhood_name, neighborhoods.boroname AS borough FROM neighborhoods AS neighborhoods JOIN stations AS subways ON ST_Contains(neighborhoods.geom, subways.geom);''', engine)
這有效並返回了預期的輸出。但是當我返回這個查詢時,我注意到表“地鐵”被引用(也許這是我感到困惑的地方)但我沒有一個名為“地鐵”的表,因為我已經將該表命名為“車站”。實際上,這是數據庫中可用表的列表:
pd.read_sql_query('''SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';''',engine) table_name 0 geography_columns 1 geometry_columns 2 spatial_ref_sys 3 neighborhoods 4 raster_columns 5 raster_overviews 6 streets 7 solar 8 stations 9 census 10 vehicles
那麼,為什麼這個查詢有效?
我想我是從查詢的 SELECT 部分中以 命名的表中查詢行
subways
,subway.name
不是嗎?
FROM ... JOIN stations AS subways ...
這稱為別名。您別名
stations
為subways
. 因此,對於查詢的其餘部分(ON
,SELECT
部分),該表稱為地鐵,您只能將其作為地鐵引用。