我之所以来到这里,是因为我在Oracle数据库中没有足够的经验来解决这个问题。让我解释:
我有一个表,我们会打电话给 属性 ,包含3列: ID ,属性的ID, -edit:ENTITY_ID为好,它是指/编辑-实体 ,
TABLE_NAME ,包含表的名称,其中的存储该属性的值,以及 Column_name ,其中包含该表中存储该值的列的名称。
在 Table_name 列中引用的每个表都包含相同的列名(例如 Value1 , Value2
等),除了第一个引用该属性链接到的实体( Entity_id )的表。
我的目标是建立一个查询,以选择每个属性(基于其ID)及其值。但是我不知道该怎么查询,因为表名和列名都发生了变化。有没有使用变量的方法?但是,如果是这样,我如何将它们放入查询中,以便它自动针对每一行进行更改?
编辑
ATTRIBUTES table
ID ENTITY_ID TABLE_NAME COLUMN_NAME
---------- -------------- ------------ -----------
1 3 Values_A Value_1
2 2 Values_B Value_3
3 2 Values_A Value_2
VALUES_A table
ENTITY_ID Value_1 Value_2 Value_3
---------- -------------- ------------ -----------
1 Monday 42 Green
2 Sunday 3000 Blue
3 Wednesday 1 Black
VALUES_B table
ENTITY_ID Value_1 Value_2 Value_3
---------- -------------- ------------ ------------
1 Tuesday 26 Green
2 Saturday 3 Red
3 Wednesday 15 White
所以我要寻找的结果是:
RESULT:
ID Value
--------- -----------
1 Wednesday
2 Red
3 3000
抱歉,如果观看起来很痛苦,制作起来也很痛苦(找不到更好的格式化方法)
使用Peter M的查询来构建SQL文本,然后利用XML的强大功能:
create table attributes (id, entity_id, table_name, column_name)
as
select 1, 3, 'VALUES_A', 'VALUE_1' from dual union all
select 2, 2, 'VALUES_B', 'VALUE_3' from dual union all
select 3, 2, 'VALUES_A', 'VALUE_2' from dual;
create table values_a (entity_id, value_1, value_2, value_3)
as
select 1, 'Monday', 42, 'Green' from dual union all
select 2, 'Sunday', 3000, 'Blue' from dual union all
select 3, 'Wednesday', 1, 'Black' from dual;
create table values_b (entity_id, value_1, value_2, value_3)
as
select 1, 'Tuesday', 26, 'Green' from dual union all
select 2, 'Saturday', 3, 'Red' from dual union all
select 3, 'Wednesday', 15, 'White' from dual;
询问:
with queries as
( select table_name, column_name, entity_id
, 'select '|| column_name || ' as c from ' || table_name ||
' where entity_id = ' || entity_id ||
case
when id = max_id then ''
else ' union all '
end as sqltext
from
( select a.*, max(a.id) over (order by id) max_id from attributes a ) )
select table_name, column_name, entity_id
, extractvalue(xmltype(dbms_xmlgen.getxml(sqltext)),'/ROWSET/ROW/C') as sql_result
from queries;
结果:
TABLE_NAME COLUMN_NAME ENTITY_ID SQL_RESULT
---------- ----------- ---------- ---------------------------------------------------
VALUES_A VALUE_1 3 Wednesday
VALUES_B VALUE_3 2 Red
VALUES_A VALUE_2 2 3000
您好,从我的问题开始:Windows Azure表访问延迟分区键和行键选择有关我在 Azure 存储帐户中组织数据的方式。我有一个表存储方案,旨在存储有关实体的信息。 大约有4000-5000个实体。共有6种实体类型,类型大致均匀分布。所以每个大约800英尺。 参数键:实体类型-日期 行键:实体标识 随着问题的详细说明,我一直遇到延迟问题,查询多个分区似乎需要很长时间。 基本上,一个可能的解决方案
我试图使用rest API从azure数据表中检索数据。 Api错误已输出,数据无效。 如果我同时添加RowKey和PartitionKey,就像下面这样。它起作用了。 是否需要通过行键? 如果我只想从一个分区检索所有数据。我知道,我们可以在查询参数中添加一个$filter,但这不会导致性能问题吗? 请分享你的想法。 谢谢!
我正试图弄清楚如何在HIVE Metastore中查询表和列注释(描述)。如果有一种方法可以将注释添加到配置单元表/列中,那么不应该有一种方法可以查询/报告来自配置单元转移的注释吗? 请帮忙:) 向你致意,迈克尔
我有一个MongoDB集合,其中包含以下字段的文档: 日期(日期obj) 我想用MongoRepository编写一个方法来查找日期在一系列日期中的所有文档,并且offerType包含列表中提供的字符串之一 文件: 日期:2019年4月10日,报价类型:报价1 我想要: 日期在9-04-2019和12-04-2019之间 以下优惠:Offer1、offer3 在上一个示例中,我将获得文档1和2。
使用扩展度量,我试图检索特定VM的特定度量。每个查询似乎花费的时间都非常长,因为表中每隔15秒就会为每个VM创建新的记录。 所以我试图在最后5分钟内查询该表,但它不起作用,并给我一个错误。有人知道如何查询这些WADMETRICS表吗?
我有一个ID列表,我想过滤数据库表中没有的值。 类似这样的事情: 有没有办法用条件查询做到这一点?