Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 Oracle查询-使用第一个表中的列数据选择记录_Sql_Oracle - Fatal编程技术网

Sql Oracle查询-使用第一个表中的列数据选择记录

Sql Oracle查询-使用第一个表中的列数据选择记录,sql,oracle,Sql,Oracle,使用Oracle,我有需要查询的表。有一个主表,其中有一个字段包含所有其他表的名称。(每行一个) 第一个表(table1)有一个列,该列的表名为第二个表(table1.table2name) 第二个表有一个日期字段(datetocheck)。如果第二个表中没有超过6个月的记录(表2有日期,表1有我要显示的数据),我只想从第一个表中带回记录 它将以这种形式出现: select * from table1 where not exists ( select *

使用Oracle,我有需要查询的表。有一个主表,其中有一个字段包含所有其他表的名称。(每行一个)

第一个表(table1)有一个列,该列的表名为第二个表(table1.table2name)

第二个表有一个日期字段(datetocheck)。如果第二个表中没有超过6个月的记录(表2有日期,表1有我要显示的数据),我只想从第一个表中带回记录

它将以这种形式出现:

select * from table1 
where not exists (
                  select * from table1.table2name
                  where datetocheck > add_months(sysdate, -6)
                 )
谢谢

其他信息

有一个表1和多个表2

比如说

主表(表1) 记录1:列:table2name='Table2a'

记录2:列:table2name='Table2b'

记录3:列:table2name='Table2c'

其他表格(表2X) ---表2A

记录1:列:datetocheck='1/01/1980'

记录2:列:datetocheck='01/01/1990'

记录3:列:datetocheck='01/01/2000'

---表2B

记录1:列:datetocheck='1/01/1982'

记录2:列:datetocheck='01/01/1983'…等

---表2C

记录1:列:datetocheck='1/01/2014'

记录2:列:datetocheck='2014年1月2日'…等


注意#1:table1和table2x之间的唯一关系是table1中的table2name列和table2x中的实际表名。

您可以使用
DBMS\u XMLGEN
在查询中创建动态SQL:

select *
from table1 as t1
where dbms_xmlgen.getxmltype('select * from ' || 
                             t1.table2name ||
                             ' where datetocheck > add_months(sysdate, -6)
').extract('//text()').getstringval() is not null

好的,那么您尝试了什么?您不能在SQL语句中动态引用表名。你需要一个准备好的语句或光标。看这里:a.B.凯德,谢谢你,你肯定走对了方向。一个简单的问题,如果Table2位于table1的某个字段中,我将如何提取Table2名称?谢谢。我不明白你的问题,我编辑了我的答案,将表1的别名改为
t1
,这样你就可以看到我用
t1提取了值。表2name
尝试了你的例子,效果非常好。哇,恭喜你,谢谢你。标记为答案。凯德,你知道有没有一种简单的方法来检查表2X是否存在吗?我收到一个错误,因为某些表位于table1行中,但该表(table2x)不存在。我有一个想法-将
table1
user\u表
连接,这样只会查询现有表,但不幸的是,您无法确定将首先计算where子句的哪一部分。。。不管怎么说,我找到了一种方法(我想),但这很难看。请看下面的图片