Выборка извлекает первое вхождение из результата - PullRequest
0 голосов
/ 09 июля 2010

У меня есть Oracle SQL-запрос

select
    distinct 
    tab1.col1,
    tab2.col1
from 
    table1 tab1 
    join table2 tab2 on tab1.col1 = tab2.col1

Здесь я получаю, как и ожидалось, с точки зрения различных значений.

For Example : The result rows are

1  2 
3  4
5  6

Теперь я хочу добавить еще одно объединение для table3.поэтому мой sql

select
    distinct 
    tab1.col1,
    tab2.col1,
    tab3.col1
from 
    table1 tab1 
    join table2 tab2 on tab1.col1 = tab2.col1
    join table3 tab3 on tab1.col1 = tab3.col1

Здесь проблема в том, что таблица 3 возвращает более одного значения.что приводит к дублированию строк на основе таблицы 3.

For Example : The result rows are
1  2  4 
1  2  5 
3  4  1
3  4  2
5  6  3

(Здесь, если вы заметите, что строки 1 и 2 дублируются, а строки 3 и 4 дублируются)

Я пытаюсь сделать следующеедля объединения таблицы 3 я хочу получить первое вхождение строки.

Ответы [ 2 ]

4 голосов
/ 09 июля 2010

Этот шуд у тебя работает!

select 
    distinct  
    tab1.col1, 
    tab2.col1, 
    MIN(tab3.col1)
from  
    table1 tab1  
    join table2 tab2 on tab1.col1 = tab2.col1 
    join table3 tab3 on tab1.col1 = tab3.col1 
GROUP BY tab1.col1, tab2.col1

Редактировать: Мысли,

Я предполагаю, что столбец 3 является целым числом, которое постоянно увеличивается, в этом случае это работает. Вы можете использовать столбец даты, чтобы точно определить агрегат, чтобы получить «первое вхождение в вашей строке».

1 голос
/ 09 июля 2010
select
    distinct 
    tab1.col1,
    tab2.col1,
    t3.col1
from 
    table1 tab1 
    join table2 tab2 on tab1.col1 = tab2.col1
    join (select distinct col1 from table3) t3 on tab1.col1 = t3.col1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...