2017-07-27 69 views
0

有關信息,此問題的一般用途是能夠在QGIS中使用可更新的查看系統。PostgreSQL 9.5選擇中的多個SELECT

比方說,我有一張桌子「建築」和一張桌子「公寓」。比方說,表是這樣定義:

CREATE TABLE building (
    id_building INTEGER PRIMARY KEY, 
    adress VARCHAR(255) 
    ); 

CREATE TABLE apartment (
    id_apartment INTEGER PRIMARY KEY, 
    floor INTEGER, 
    id_building INTEGER, 
    CONSTRAINT fk1 FOREIGN KEY (id_building) REFERENCES building (id_building) 
    ); 

INSERT INTO building VALUES (1, 'adress1'); 
INSERT INTO building VALUES (2, 'adress2'); 

INSERT INTO apartment VALUES (1, 0, 1); 
INSERT INTO apartment VALUES (2, 0, 1); 
INSERT INTO apartment VALUES (3, 0, 1); 
INSERT INTO apartment VALUES (4, 1, 1); 
INSERT INTO apartment VALUES (5, 1, 1); 
INSERT INTO apartment VALUES (6, 1, 1); 
INSERT INTO apartment VALUES (7, 2, 1); 
INSERT INTO apartment VALUES (8, 2, 1); 
INSERT INTO apartment VALUES (9, 0, 2); 
INSERT INTO apartment VALUES (10, 1, 2); 
INSERT INTO apartment VALUES (11, 1, 2); 
INSERT INTO apartment VALUES (12, 2, 2); 
INSERT INTO apartment VALUES (13, 2, 2); 

我想,在建表的視圖,顯示由地板分組公寓的數量。如果可能的話,將會有怎樣的做法?而且由於樓層的數量可能會有所不同,因此能夠自動生成相對於每棟建築物樓層數的某種靈活視圖會更好。

有了這個代碼在這裏的一個版本:http://rextester.com/MTIJ52125

感謝您的時間。

回答

1

也許它只是簡單:

CREATE VIEW apartments AS (
    SELECT 
    building.id_building, 
    apartment.floor, 
    count(apartment.id_apartment) as apartments_per_floor 
FROM 
    apartment,building 
WHERE 
    building.id_building = apartment.id_building 
GROUP BY apartment.floor, building.id_building, apartment.floor 
ORDER BY 1,2 
); 

SELECT * FROM apartments; 
+0

的確!現在我只需要弄清楚如何在QGIS中正確呈現。謝謝 :) –