Как сделать подзапрос, используя результат, полученный в исходном запросе? - PullRequest
0 голосов
/ 14 июля 2011

Вот ситуация, которая у меня есть .. Мне нужно выбрать все связанные случаи для данного quoteId, и для этого требуется объединение 3 таблиц, и я могу предложить запрос для этого.Ниже приведен пример: для краткости я пропустил какое-то имя таблицы и использовал только имя псевдонима.

SELECT distinct caseTable.CASEID, quoteHdrTable.Case_UID FROM 
caseTable INNER JOIN quoteHdrTable ON
quoteHdrTable.Case_UID = caseTable.Case_UID WHERE quoteHdrTable.QUOTE_ID = '12345'.

Теперь для каждого возвращаемого CASE_UID мне также нужно отобразить его статус из другой таблицы.Это имеет структуру ниже.

STATUS_TABLE
CASE_UID         STATUS
------------   -----------
123               Good
234               Bad.
345               {null}

В конце я хочу получить результат, подобный

result
case_ID   case_UID       status
001         123           Good

Можем ли мы использовать подзапрос для выполнения 2-го SQL, используя результат (case_UID) из первого ..пожалуйста, предоставьте указатели или образец SQL-предложения.

К вашему сведению ... с использованием базы данных DB2

Спасибо Sandeep

Ответы [ 2 ]

0 голосов
/ 14 июля 2011
SELECT      distinct 
            caseTable.CASEID,
            quoteHdrTable.Case_UID,
            status.STATUS
FROM        caseTable 
INNER JOIN  quoteHdrTable 
ON          quoteHdrTable.Case_UID = caseTable.Case_UID
INNER JOIN  STATUS_TABLE status
ON          quoteHdrTable.Case_UID = status.Case_UID
WHERE       quoteHdrTable.QUOTE_ID = '12345'
0 голосов
/ 14 июля 2011
SELECT distinct c.CASEID, q.Case_UID, s.status
FROM caseTable c 
INNER JOIN quoteHdrTable q ON q.Case_UID = c.Case_UID
LEFT JOIN StatusTable s ON s.CASE_UID = q.CASE_UID
WHERE quoteHdrTable.QUOTE_ID = '12345'

Почему бы просто не добавить еще JOIN?

...