如何从表中获取属性值以在查询中使用?

时间:2015-02-12 13:08:56

标签: sql postgresql

我有一个表来存储表名(我们称之为“CUSTOM_TABLES”)。 我有一个表来注册数据跟踪(称之为“消费”)。 我有用户创建的表,我不知道它的名字(在运行时创建),因此,系统创建表(执行DDL)并将其名称存储在“CUSTOM_TABLES”中。现在可以称之为“USER_TABLE”。

当在表“USER_TABLE”中生成数据时,我在跟踪表(“CONSUMPTIONS”)中注册数据的行ID和“CUSTOM_TABLES”中找到的“USER_TABLE”的ID。

现在,我需要找一个消耗,数据是什么表和哪一行。请记住:在“CONSUMPTIONS”表中,我只有一个ID(FK)指向“CUSTOM_TABLES”。

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

在这种情况下,“保险”是“USER_TABLE”。 但我不知道“保险”。我需要使用它的ID在“CUSTOM_TABLES”中找到它。

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_tables”具有“index_id”属性作为其PK。 我更喜欢不使用功能。

0 个答案:

没有答案