2017-07-27 56 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中正确呈现。谢谢 :) –