大佬教程收集整理的这篇文章主要介绍了如何在Postgresql中的SELECT语句中创建“即时”映射表,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
create table output_type ( id integer NOT NulL,@R_526_4687@T,primary key (id) ); create table device ( id integer NOT NulL,primary key (id) ); create table zone ( ID seriaL NOT NulL,device_id integer NOT NulL REFERENCES device(ID),zone_number IntegeR NOT NulL,primary key (id),UNIQUE (zone_number) ); create table output ( ID seriaL NOT NulL,output_type_id integer NOT NulL REFERENCES output_type(ID),enabled BooleAN NOT NulL,primary key (id) );
这里有一些示例数据:
INSERT INTO output_type (ID,@R_696_8313@ VALUES (101,'Output 1'),(202,'Output 2'),(303,'Output 3'),(404,'Output 4'); INSERT INTO device (ID,@R_696_8313@ VALUES (1,'Test Device'); INSERT INTO zone (device_ID,zone_number) VALUES (1,1),(1,2),3),4); INSERT INTO output (device_ID,output_type_ID,enabled) VALUES (1,101,TRUE),202,falSE),303,404,TRUE);
我需要从给定设备的每个区域的输出表中获取关联的已启用字段.
每个zone_number映射到一个output_type_ID.对于这个例子:
zone_number | output_type_ID ---------------------------- 1 | 101 2 | 202 3 | 303 4 | 404
处理映射的一种方法是创建一个新表
create table zone_output_type_map ( zone_number IntegeR,output_type_id integer NOT NulL REFERENCES output_type(ID) ); INSERT INTO zone_output_type_map (zone_number,output_type_ID) VALUES (1,101),(2,202),(3,303),(4,404);
并使用以下sql获取设备1的所有区域以及启用的标志:
SELECT zone.*,output.enabled FROM zone JOIN output ON output.device_ID = zone.device_ID JOIN zone_output_type_map map ON map.zone_number = zone.zone_number AND map.output_type_ID = output.output_type_ID AND zone.device_ID = 1
然而,我正在寻找一种方法来创建区域分类器的输出映射
类型,而不创建一个新的表,而不是拼凑在一起的AND / OR
声明.有没有一种优雅的方法来创建两个字段之间的映射
在选择语句中?就像是:
SELECT zone.*,output.enabled FROM zone JOIN output ON output.device_ID = zone.device_ID JOIN ( SELECT ( 1 => 101,2 => 202,3 => 303,4 => 404 ) (zone_number,output_type_ID) ) as map ON map.zone_number = zone.zone_number AND map.output_type_ID = output.output_type_ID AND zone.device_ID = 1
免责声明:我知道,在该区域内,启用的域将会被理解
表.但是,我无法控制那件事.我只是在寻找
最优雅的解决方案来自应用端.谢谢!
join (values (1,304)) as map(zone_number,output_type_ID) on ...
从fine manual:
以上是大佬教程为你收集整理的如何在Postgresql中的SELECT语句中创建“即时”映射表全部内容,希望文章能够帮你解决如何在Postgresql中的SELECT语句中创建“即时”映射表所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。