Postgresql

Postgres/PostGIS 正在從不存在的表中返回數據(我是新手——告訴我為什麼我錯了)

  • September 17, 2019

我正在關注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 部分中以 命名的表中查詢行subwayssubway.name不是嗎?

FROM ...
    JOIN stations AS subways
   ... 

這稱為別名。您別名stationssubways. 因此,對於查詢的其餘部分(ONSELECT部分),該表稱為地鐵,您只能將其作為地鐵引用。

引用自:https://dba.stackexchange.com/questions/248481