0
我有兩個父表如下使用st_distance父母幾何
CREATE TABLE GISD.CUSTOMERS
(CUSTOMER_ID INTEGER NOT NULL,
FIRST_NAME VARCHAR (15) NOT NULL,
SURNAME VARCHAR (20) NOT NULL,
DATE_OF_BIRTH DATE NOT NULL,
HOUSE_NUMBER VARCHAR (5) NOT NULL
POST_CODE VARCHAR(8) NOT NULL,
STREET VARCHAR (25) NOT NULL,
TOWN VARCHAR (25) NOT NULL
);
SELECT ADDGEOMETRYCOLUMN('gisd','customers', 'customers_geom', '27700','POINT',2);
和
CREATE TABLE GISD.CINEMAS
(CINEMA_ID INTEGER NOT NULL,
CINEMA_NAME VARCHAR(25) NOT NULL,
ADDRESS_NUMBER INTEGER NOT NULL,
POST_CODE VARCHAR(8) NOT NULL,
STREET VARCHAR (25) NOT NULL,
TOWN VARCHAR (25) NOT NULL,
OPENING_TIME TIME NOT NULL,
CLOSING_TIME TIME NOT NULL
);
SELECT ADDGEOMETRYCOLUMN('gisd','cinemas', 'cinemas_geom', '27700','POLYGON',2);
SELECT ADDGEOMETRYCOLUMN('gisd','cinemas', 'centroid', '27700','POINT',2);
我有一個使用外鍵從這兩個表作爲這樣的孩子:
CREATE TABLE GISD.BOOKING
(BOOKING_ID INTEGER NOT NULL,
CUSTOMER_ID INTEGER NOT NULL,
CINEMA_ID INTEGER NOT NULL,
TIME TIME NOT NULL,
DATE DATE NOT NULL,
FILM VARCHAR(50) NOT NULL,
BOOKING_METHOD VARCHAR (15) NOT NULL,
BOOKING_FEE NUMERIC NOT NULL -- Numeric is suggested by postgresql.org for currency
TICKET_PRICE NUMERIC NOT NULL
);
是否有一種方法可以讓我獲取唯一的預訂ID並參考客戶幾何圖形和電影地理metry來計算ST_Distance?我假設某種嵌套查詢可以做到這一點,但沒有運氣?
歡呼
UPDATE(從評論)
我曾嘗試下面的代碼:
SELECT (ST_DISTANCE(
(SELECT centroid
FROM GISD.CINEMAS
INNER JOIN GISD.BOOKING ON CINEMAS.CINEMA_ID=BOOKING.CINEMA_ID
),(
SELECT customers_geom
FROM GISD.CUSTOMERS
INNER JOIN GISD.BOOKING ON CUSTOMERS.CUSTOMER_ID=BOOKING.CUSTOMER_ID
)
))
卻得到一個錯誤說「由子查詢返回多行作爲一種表達'任何想法如何繞過這個?理想情況下,我希望它返回每個預訂ID的距離。
1)將FK:REFERENCES customers(id)添加到customer_id的預訂表中。 2)cinema_id類似3)將DATE +時間組合成一個時間戳字段(很多easyer需要處理和比較)4)你只需要一個'select ...從一個連接B ON ... join c ON ...'類型的查詢。 – wildplasser 2013-02-16 18:15:01
只需google'SQL JOIN'並閱讀文檔。 – 2013-02-16 18:54:04
謝謝你們。你指引我朝着正確的方向發展!我曾嘗試下面的代碼SELECT(ST_DISTANCE((SELECT重心 FROM GISD.CINEMAS INNER JOIN GISD.BOOKING ON CINEMAS.CINEMA_ID = BOOKING.CINEMA_ID),(SELECT customers_geom FROM GISD.CUSTOMERS INNER JOIN GISD.BOOKING 客戶.CUSTOMER_ID = BOOKING.CUSTOMER_ID))) ,但得到一個錯誤,說'多個行作爲表達式使用子查詢返回' 任何想法如何得到這個?我理想的是希望它返回每個預訂ID的距離 – user2076033 2013-02-16 18:58:20