I'm doing a query similar to this in structure, and it currently works fine in Oracle 8.1.7:
But my tableOne 'outer query' reference is now two levels deep and Oracle complains.Code:SELECT tableOne.name, tableTwo.nameAgain, (SELECT MIN(tableThree.createDate) FROM tableThree, tableFour WHERE tableThree.tableFourID = tableFour.tableFourID AND tableFour.nameType = 'Historical_Event' AND tableThree.tableTwoID = tableOne.tableTwoID) oldestEvent, (SELECT SUM(COUNT(DISTINCT tableFive.specialID)) FROM tableFive, tableSix WHERE tableFive.tableSixID = tableSix.tableSixID AND tableSix.nameType = 'Open_Encounter' AND tableFive.tableFiveID = tableOne.tableFiveID GROUP BY tableFive.specialID) numOfEncounters FROM tableOne, tableTwo WHERE tableOne.statusID = tableTwo.statusID AND tableTwo.nameType = 'Status_Open' AND tableOne.name != 'system_account' ORDER BY tableOne.loginState DESC, tableOne.name The problem is, I tried adding another subquery to the select area that itself has a subquery, example (just the subquery that fits into the query above): (SELECT TO_CHAR(ABS(TRUNC(24*(firstDate - secondDate)))*60) + LTRIM(TO_CHAR(ABS(TRUNC(24*60*(firstDate - secondDate)) - (60*TRUNC(24*(firstDate - secondDate)))), '00')) minutesElapsed FROM (SELECT tableSeven.anotherID, (SELECT NVL(MAX(tableEight.createDate), sysdate) FROM tableEight, tableNine WHERE tableEight.tableNineID = tableNine.tableNineID AND tableNine.nameType = 'Special Chars' AND tableEight.aBigID = tableSeven.aBigID) firstDate, (SELECT tableTen.createDate FROM tableTen, tableEleven WHERE tableTen.tableElevenID = tableEleven.tableElevenID AND tableEleven.nameType = 'Special Chars Again' AND tableTen.aBigID = tableSeven.aBigID) secondDate, FROM tableSeven WHERE tableSeven.someIDAgain = tableOne.someIDAgain AND tableSeven.createdDate > TO_DATE('07/01/2003 00:00:00', 'MM/DD/YYYY HH24:MI:SS'))
But, I've been told that this is horrible Oracle SQL syntax and should be recoded anyways.
Problem is, in the Oracle documentation they talk about subqueries and correlated subqueries (Which I think I have since an inner query references an outer column) but none of them put the subqueries into the select portion (where it seems to just make sense).
I just don't see how this can be combined into a single statement because the seperate subqueries are doing a lot of aggregate functions on their own.
I could really use some help in this matter. How should I be writing this thing?


Reply With Quote
Bookmarks