【发布时间】:2023-02-02 18:14:16
【问题描述】:
我有两张桌子:
包含两列的 PROJECT - PROJECTNAME (text) 和 HOSTS (bigint[])
HOST 包含三列 HOSTID (bigint) 和 IP (inet) 以及 HOSTNAME (text)
我希望编写一个执行以下操作的查询:
SELECT hosts
FROM project
WHERE projectname = 'Project test'
然后对于主机中的每个 bigint,我希望做这样的事情:
FOREACH hostid in HOSTS(bigint[])
SELECT x,y,x FROM HOST WHERE IP <<=inet '10.10.10.0/20'
我目前正在通过多个单独的查询以低效的方式执行此操作。我真的很想了解如何将它们组合成一个简洁的查询。
谢谢,我只是想更好地了解如何构建这些查询。
【问题讨论】:
-
我会首先修复数据模型并摆脱数组。使用附加表使用适当的多对多关系。连接不同表和记录的简单 JOIN 可以解决您的问题。
-
示例数据最好呈现为 formatted text。有关如何创建漂亮表格的一些提示,请参阅here。
标签: c# postgresql subquery