Выбор нескольких столбцов в качестве таблицы - PullRequest
0 голосов
/ 13 марта 2012

У меня проблема при разработке запроса:

  1. Я должен выбрать несколько записей на основе критериев

    (SELECT COL_1, COL_2,COL_3 FROM TABLE_1 WHERE COL_3 = 'CND')
    
  2. Теперь мне нужно выбрать записи из двух баз данных на основе этих результатов

    (SELECT XX_1, XX_2 
     FROM TABLE_2 WHERE TABLE_2.XX1 = TABLE_1.COL1 
    (from filtered results in step 1)
    
  3. (SELECT YY_1, YY_2, YY_3 
     FROM TABLE_3 WHERE TABLE_3.YY_2 = TABLE_1.COL2)
    (from filtered results in step 1)
    
  4. Мне нужны результаты в виде одной таблицы

    XX_1, XX_2, YY_1, YY_2, YY_3
    

упомянутые столбцы должны быть равны результату, и должна выбираться только запись с таким равенством.

Мне нужно запустить это на миллионах записей, поэтому производительность считается

Он будет использоваться в классах Java, поэтому, пожалуйста, не предлагайте мне никаких специфических для db команд / sql, которые не могут быть выполнены, поскольку у меня нет никаких разрешений для db, кроме чтения.

Надеюсь, мне ясно. Если нет, я объясню сомнения.

Я пробовал что-то вроде этого

SELECT *
FROM TABLE_2
JOIN
(SELECT COL_1, 
    COL_2, 
    COL_3 
 FROM TABLE_1
 WHERE COL_3 = 'CND'
 GROUP BY COL_1) TMP_TABLE
 ON (TMP_TABLE.COL_1 = TABLE2.XX_1)

Но я получил представление / таблица не существует - ошибка оракула. ​​

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я думаю, вам нужно использовать подзапрос, так же, как это

select col_1,col_2

from(

  select col_1,col_2

  from (

     select col_1,col_2 from table_1

  )tbl1

  left join table_2 tbl2 on tbl2.col_1 = tbl1.col_1

)tbl3

left join table_3 tbl3 on tbl4.col_1 = tbl3.col_1
0 голосов
/ 13 марта 2012
with usedrows as
( select a.Col_1,a.Col_2 FROM table1 a left JOIN table2 b ON a.Col_1=b.Col_2)
select Col_1,C0l_2 from usedrows 

Это просто пример, где usedrows - это виртуальная таблица, созданная после объединения. И вы можете выбрать столбцы из этой таблицы объединения, как вы выбираете из другой таблицы.

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