Postgresql
一張表的多列依賴於一張表
我正在使用 PostgreSQL 9.2 並在 2 個表之間具有以下關係:
該表
town
儲存城鎮程式碼列表。該表perimeter
儲存周長面額。城鎮幾乎總是包含在相同的廢水和飲用水範圍內。但是有一些可以包含在與飲用水不同的廢水周界中。表
town
:t_code | t_waste_water | t_drinking_water --------+---------------+------------------ 001 | 01 | 01 002 | 02 | 02 003 | 01 | 03 004 | 02 | 02 005 | 01 | 01
表
perimeter
:perim_code | perim_name -----------+------------ 01 | North 02 | West 03 | East
例如,城鎮
003
包括在廢水的北部邊界和飲用水的東部邊界。對於廢水或飲用水問題具有相同名稱的周界,我將它們放在一個中央表中,而不是將資訊複製到一個廢水錶和一個飲用水錶中。現在,我想在一個表中獲取周界名稱和城鎮程式碼,如下所示:
town | perim_waste_water | perim_drinking_water --------+-------------------+------------------ 001 | North | North 002 | West | West 003 | North | East
我的問題是我看不到如何顯示多個周邊名稱,因為我可以在兩個表之間指定一個關係 (JOIN)。以下查詢沒有用,但只是一個開始……
SELECT a.t_code, a.t_waste_water, a.t_drinking_water, b.perim_name AS waste_water_perim, b.perim_name AS drinking_water_perim FROM schema.town a LEFT JOIN schema.perimeter b ON a.t_waste_water = b.perim_code AND a.t_drinking_water = b.perim_code;
查詢中是否有解決方案,還是我必須在數據庫中以不同的方式構造數據?
我不得不在這裡使用兩個 JOIN,但我認為這會起作用。您可以多次加入同一張桌子
SELECT a.t_code, a.t_waste_water, a.t_drinking_water, b.perim_name AS waste_water_perim, c.perim_name AS drinking_water_perim FROM schema.town a JOIN schema.perimeter b ON a.t_waste_water = b.perim_code JOIN schema.perimeter c ON a.t_drinking_water = c.perim_code;