Sql, чтобы найти выходной файл по отношению к входному файлу из таблицы

Я должен узнать имя выходного файла относительно имени входного файла:

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 вышеприведенного запроса, я обнаруживаю промежуточный идентификатор источника

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

Теперь, основываясь на идентификаторе адресата этого результата, я получаю выходной файл следующим образом

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

Как и мне, мне нужно найти выходной файл по всем входным файлам, и мне интересно, как это сделать, может ли кто-нибудь помочь мне с этим, это было бы большой помощью

Заранее спасибо

1 ответ

Подумайте о трех запросах как о трех запросах с трех разных таблиц, тогда вам просто нужно присоединиться к ним (... насколько я понимаю ваше требование). Что-то вроде этого может быть тем, что вы ищете:

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

Заклинай здесь.

Представления могут быть очень полезны, если вам нужно сделать это очень часто - например, для общих типов событий.

licensed under cc by-sa 3.0 with attribution.