Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I rewrote the query (for reference, the original answer is below).</p> <pre><code>WHEN PROJECT.PARENT_ID IN (SELECT parent_id FROM object WHERE object.id IN (SELECT parent_id FROM object WHERE object.id IN (SELECT parent_id FROM TESTRESULTS t1 WHERE t1.RESULTID = '962' and not exists (select * from object o2 WHERE PROJECT.PARENT_ID = o2.id and o2.id IN (SELECT parent_id FROM object WHERE object.id IN (SELECT parent_id FROM object WHERE object.id IN (SELECT parent_id FROM TESTRESULTS t2 WHERE t2.RESULTID = '961' and t1.testtype = t2.testtype and t2.testdate &gt; t1.testdate))))))) AND PROJECT.PROJECTNAME LIKE '%EMC%' </code></pre> <p>Test scenario to reach that result:</p> <pre><code>create table #tmpObj (ident int primary key, parent_id int, description varchar(20)); insert into #tmpObj (ident, parent_id, description) values (50, 0, 'Product Level'); insert into #tmpObj (ident, parent_id, description) values (60, 50, 'Project X'); insert into #tmpObj (ident, parent_id, description) values (70, 60, 'Work request 1'); insert into #tmpObj (ident, parent_id, description) values (101, 70, 'Work order 1a'); insert into #tmpObj (ident, parent_id, description) values (102, 70, 'Work order 1b'); insert into #tmpObj (ident, parent_id, description) values (103, 70, 'Work order 1c'); insert into #tmpObj (ident, parent_id, description) values (71, 60, 'Work request 2'); insert into #tmpObj (ident, parent_id, description) values (111, 71, 'Work order 2a'); insert into #tmpObj (ident, parent_id, description) values (112, 71, 'Work order 2b'); insert into #tmpObj (ident, parent_id, description) values (113, 71, 'Work order 2c'); insert into #tmpObj (ident, parent_id, description) values (61, 50, 'Project Z'); insert into #tmpObj (ident, parent_id, description) values (80, 61, 'Work request 1'); insert into #tmpObj (ident, parent_id, description) values (201, 80, 'Work order 1a'); insert into #tmpObj (ident, parent_id, description) values (202, 80, 'Work order 1b'); insert into #tmpObj (ident, parent_id, description) values (203, 80, 'Work order 1c'); insert into #tmpObj (ident, parent_id, description) values (81, 61, 'Work request 2'); insert into #tmpObj (ident, parent_id, description) values (211, 81, 'Work order 2a'); insert into #tmpObj (ident, parent_id, description) values (212, 81, 'Work order 2b'); insert into #tmpObj (ident, parent_id, description) values (213, 81, 'Work order 2c'); create table #tmpTest (ident int primary key, parent_id int, name1 varchar(10), resultid int, testdate date); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2001, 101, 'ESD', 962, '2011-01-01'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2002, 102, 'CI', 961, '2011-01-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2003, 103, 'RI', 961, '2011-01-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2004, 111, 'ESD', 961, '2011-02-01'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2005, 112, 'CI', 962, '2011-02-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2006, 113, 'RI', 961, '2011-02-03'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2007, 201, 'ESD', 961, '2011-01-01'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2008, 202, 'CI', 961, '2011-01-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (2009, 203, 'RI', 961, '2011-01-02'); SELECT * FROM #tmpObj o1 WHERE o1.ident IN (SELECT parent_id FROM #tmpObj WHERE #tmpObj.ident IN (SELECT parent_id FROM #tmpObj WHERE #tmpObj.ident IN (SELECT parent_id FROM #tmpTest t1 WHERE t1.RESULTID = 962 and not exists (select * from #tmpObj o2 WHERE o1.ident = o2.ident and o2.ident IN (SELECT parent_id FROM #tmpObj WHERE #tmpObj.ident IN (SELECT parent_id FROM #tmpObj WHERE #tmpObj.ident IN (SELECT parent_id FROM #tmpTest t2 WHERE t2.RESULTID = 961 and t1.name1 = t2.name1 and t2.testdate &gt; t1.testdate))))))); </code></pre> <hr> <p>Original answer:</p> <p>Well, the given information confuses me a little, but it seems as if this calls for an EXISTS() subquery (I hope that is available in interbase), like the following (simplified, without the parent-parent stuff) example:</p> <pre><code>create table #tmpTest (ident int primary key, parent_id int, name1 varchar(10), resultid int, testdate date); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (4, 1, 'ESD', 962, '2011-01-01'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (5, 2, 'CI', 961, '2011-01-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (6, 1, 'ESD', 961, '2011-02-01'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (7, 8, 'RI', 962, '2011-02-02'); insert into #tmpTest (ident, parent_id, name1, resultid, testdate) values (9, 8, 'RI', 962, '2011-02-03'); select * from #tmpTest t1 where resultid = 962 and not exists (select ident from #tmpTest t2 where t2.parent_id = t1.parent_id and t2.resultid = 961 and t2.testdate &gt; t1.testdate); </code></pre> <p>I assumed that the parent_id in your testresults table can be used to identify the test category, but that may not be accurate. I hope this will at least help you to refine your query.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload