2016-08-31 1 views
0

SQL이 매우 녹슬지 만 새로운 정보를 수집하기 위해 쿼리를 수정해야합니다. 아래 쿼리에서 사용되는 timer_call_data tcd에는 id 필드가 있으므로 timer_call_data.id를 선택해야합니다. 나는 실제 솔루션이 사소하다고 생각하지만, 나는 어디에서/어떻게 timer_call_data를 질의에 추가하고 최종 선택에서 사용할 수있는 방법으로 합칠 수 있는지 명확하지 않다. 어떤 도움이라도 대단히 감사하겠습니다.재귀 SQL 쿼리에 다른 테이블의 열을 추가하려면 어떻게합니까?

with recursive cp (id, parent, timer, name) as ( 
SELECT tc.id, tc.parent, tc.timer, timer.name 
FROM timer_callpath tc inner join timer on tc.timer = timer.id 
where timer.trial = 2 and tc.parent is null 
UNION ALL 
SELECT d.id, d.parent, d.timer, cp.name || ' => ' || dt.name 
FROM timer_callpath AS d JOIN cp ON (d.parent = cp.id) 
join timer dt on d.timer = dt.id where dt.trial = 2) 
select cp.id from cp 
left outer join timer_call_data tcd on tcd.timer_callpath = cp.id 
left outer join thread h on tcd.thread = h.id 
where cp.name = '.TAU application' and h.thread_index = '0' 
+1

예제 데이터, 원하는 결과 및 수행하려고하는 것에 대한 설명이 도움이 될 것입니다. –

답변

0

솔루션이 발견되었습니다. 필자가 필요한 것을 제공하기 위해 첫 번째 쿼리를 수정하는 방법에 대해 아직 의문을 품지는 못했지만 트릭을 수행 한 두 번째 간단한 쿼리를 제공하기 위해 쿼리를 제공 한 ID를 사용할 수있었습니다. 두 가지를 병합하는 방법을 모색 할 것입니다.하지만 기능보다는 우아함이 더 중요합니다. 누구든지 관심이있는 경우 보조 쿼리가 있습니다. 449는 첫 x 째 u 리에서 제공된 ID의 예제 값입니다.

SELECT 
    timer_call_data.id 
FROM 
    public.timer_call_data, 
    public.timer_callpath, 
    public.timer, 
    public.thread 
WHERE 
    timer_call_data.timer_callpath = timer_callpath.id AND 
    timer_call_data.thread = thread.id AND 
    timer_callpath.timer = timer.id AND 
    timer.trial = 2 AND 
    timer_callpath.id = 449 AND 
    thread.thread_index = 0; 
관련 문제