Sql从表中查找关于输入文件的输出文件

时间:2014-05-20 15:21:30

标签: sql psql

我必须找出输入文件名的输出文件名:

select sourceid as RawFile, destinationid from audittraillogentry 
where event ='67' 
  and innodename like '%_SFTP_%';

              rawfile               |               destinationid
------------------------------------+--------------------------------------------
 shortcodes_cdr_20140202_161239.csv | coll_DefaultCollectorGroup_0_1400591981_13

在上面提到的查询结果中我的输入文件名是shortcodes_cdr_20140202_161239.csv(这可能是多个文件&我需要找到所有文件的输出)

现在基于上述查询的destinationid,我找到了一个中间源ID

select sourceid, destinationid from audittraillogentry 
where event ='80' 
  and innodename like '%_SFTP_%' 
  and sourceid = 'coll_DefaultCollectorGroup_0_1400591981_13';

                  sourceid                  |                destinationid
--------------------------------------------+---------------------------------------------
 coll_DefaultCollectorGroup_0_1400591981_13 | proc_DefaultCollectorGroup_0_1400591981_120

现在根据此结果的目标ID,我得到像这样的输出文件

select destinationid 
from audittraillogentry 
where event ='68' 
  and sourceid = 'proc_DefaultCollectorGroup_0_1400591981_120';

像这样我需要找到关于所有输入文件和输出文件的输出文件。我想知道如何做到这一点,任何人都可以帮助我,这将是一个很大的帮助

先谢谢

1 个答案:

答案 0 :(得分:0)

将这三个查询视为三个不同表中的三个查询,然后您只需加入它们(......据我了解您的要求)。这样的事情可能就是你想要的:

select e68.destinationid 
from audittraillogentry e68, 
  audittraillogentry e80, 
  audittraillogentry e67 
where e67.event='67'
  and e67.innodename like '%_SFTP_%'
  and e67.destinationid=e80.sourceid
  and e80.event='80'
  and e80.innodename like '%_SFTP_%'
  and e80.destinationid=e68.sourceid
  and e68.event='68';

小提琴here

如果你需要做很多事情,那么视图真的很方便 - 例如,常见事件类型的视图。