Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从表中获取用于查询的属性值?_Sql_Postgresql - Fatal编程技术网

Sql 如何从表中获取用于查询的属性值?

Sql 如何从表中获取用于查询的属性值?,sql,postgresql,Sql,Postgresql,我有一个表来存储表名,我们称之为自定义表。 我有一个表来记录数据跟踪,称之为消耗。 我有一些表是用户创建的,我不知道它的名称是在运行时创建的,因此,系统创建表时会执行DDL,并将其名称存储在自定义_表中。现在我们把它称为USER_TABLE 当在表USER_表中生成数据时,我在跟踪表Consumpts中注册数据的行ID和在自定义_表中找到的USER_表的ID 现在,我需要找到,给定一个消耗,数据是什么表和什么行。请记住:在CONSUMPTIONS表中,我只有一个指向自定义_表的ID FK CRE

我有一个表来存储表名,我们称之为自定义表。 我有一个表来记录数据跟踪,称之为消耗。 我有一些表是用户创建的,我不知道它的名称是在运行时创建的,因此,系统创建表时会执行DDL,并将其名称存储在自定义_表中。现在我们把它称为USER_TABLE

当在表USER_表中生成数据时,我在跟踪表Consumpts中注册数据的行ID和在自定义_表中找到的USER_表的ID

现在,我需要找到,给定一个消耗,数据是什么表和什么行。请记住:在CONSUMPTIONS表中,我只有一个指向自定义_表的ID FK

CREATE TABLE consumptions
(
  id_consumption serial NOT NULL,
  id_row integer,
  id_table integer
)

CREATE TABLE custom_tables
(
  id_table serial NOT NULL,
  description character varying(250),
  name character varying(150)
)
我需要的查询如下:

select * from consumptions c
join insurance i on c.id_row = i.index_id
在这种情况下,保险是用户_表。 但我不懂保险。我需要使用它的ID在自定义_表中找到它

select name from custom_tables where 
id_table = consumption.id_table
最终查询必须类似于:

select * from consumptions c
join 
    (select name from custom_tables t where t.id_table = c.id_table) i 
on c.id_row = i.index_id
我保证user_表的主键是index_id属性。
我不喜欢使用函数。

似乎您必须在运行时动态构建查询,以便在执行查询时使用当前表名。我考虑过这一点。但我担心的是太多地访问数据库。这是一个科学的应用程序,有一个密集的数据访问。