Sql 如何从表中获取用于查询的属性值?
我有一个表来存储表名,我们称之为自定义表。 我有一个表来记录数据跟踪,称之为消耗。 我有一些表是用户创建的,我不知道它的名称是在运行时创建的,因此,系统创建表时会执行DDL,并将其名称存储在自定义_表中。现在我们把它称为USER_TABLE 当在表USER_表中生成数据时,我在跟踪表Consumpts中注册数据的行ID和在自定义_表中找到的USER_表的ID 现在,我需要找到,给定一个消耗,数据是什么表和什么行。请记住:在CONSUMPTIONS表中,我只有一个指向自定义_表的ID FKSql 如何从表中获取用于查询的属性值?,sql,postgresql,Sql,Postgresql,我有一个表来存储表名,我们称之为自定义表。 我有一个表来记录数据跟踪,称之为消耗。 我有一些表是用户创建的,我不知道它的名称是在运行时创建的,因此,系统创建表时会执行DDL,并将其名称存储在自定义_表中。现在我们把它称为USER_TABLE 当在表USER_表中生成数据时,我在跟踪表Consumpts中注册数据的行ID和在自定义_表中找到的USER_表的ID 现在,我需要找到,给定一个消耗,数据是什么表和什么行。请记住:在CONSUMPTIONS表中,我只有一个指向自定义_表的ID FK CRE
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属性。
我不喜欢使用函数。似乎您必须在运行时动态构建查询,以便在执行查询时使用当前表名。我考虑过这一点。但我担心的是太多地访问数据库。这是一个科学的应用程序,有一个密集的数据访问。