sql - Postgresql:从多个表中查看(具有相同的字段)
问题描述
我有以下数据库架构:
我想使用地址字段、房产价格/大小和用户 ID 为所有房产类型(公寓、地块、房屋)创建视图。
我有一个这样的 sql 脚本:
create or replace VIEW auction_view3 AS
select ROW_NUMBER() OVER(ORDER BY f.userid) AS id, f.userid, r."type", a.street, a.homenumber, a.localnumber, a.city, a.postcode, f.price, f."size", f.rooms, f.floor
FROM address a, flat f, realassets r
WHERE f.addressid = a.id AND a.realassetid =r.id
这个脚本只为公寓创建视图,它看起来不错,但我也想在我的视图中显示房屋和地块,我不知道如何将我的价格列放入视图中 - 所有属性表的价格值(plot
, house
, flat
) . 如何在一个视图中显示来自三个属性表的数据。我可以通过多选来实现吗?
解决方案
您需要使用union
,就像在普通select
查询中一样:
create or replace view auction_view3 as
select row_number() over(order by f.userid) as id, f.userid, r."type", a.street, a.homenumber, a.localnumber, a.city, a.postcode, f.price, f."size", f.rooms, f.floor
from address a, flat f, realassets r
where f.addressid = a.id and a.realassetid =r.id
union all
select row_number() over(order by p.userid) as id, p.userid, r."type", a.street, a.homenumber, a.localnumber, a.city, a.postcode, p.price, p."size", p.rooms, p.floor
from address a, plot p, realassets r
where p.addressid = a.id and a.realassetid =r.id
union all
select row_number() over(order by h.userid) as id, h.userid, r."type", a.street, a.homenumber, a.localnumber, a.city, a.postcode, h.price, h."size", h.rooms, h.floor
from address a, house h, realassets r
where h.addressid = a.id and a.realassetid =r.id
这里union all
速度很快,但不会删除重复项,如果您不想要,请使用它们 -union
改为使用。
推荐阅读
- php - 如何从 HTML 调用 PHP 来获取 url?
- google-sheets-api - Google Sheets API 中是否有访问脚本编辑器的方法?
- php - 找不到匹配版本的包 ext-mysql_xdevapi
- c# - 用于检查资格的嵌套 If 语句
- mysql - SQL- 插入 PHP-prepare 语句错误语法
- latex - 在 LaTeX 中嵌入 Bash 代码的问题
- ada - Ada:指定地址子句时发出不兼容的对齐警告
- java - 输入不匹配异常
- apache-spark - 从新的 csv 文件读取时,Spark 流聚合流未更新
- python - 如何解压缩字符串格式的列表列表?