Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
Подскажите, пожалуйста, как одним запросом достать записи с уникальными полями (DISTINCT) + поля кот. не должны учавтсвовать в "ключе уникальности".
На пример, есть поля Р1,Р2,Р3,Р4. Необходимо достать все записи у которых Р1 и Р2 уникальны, но при этом доставать и данные Р3,Р4.

Если делать вот так:
select DISTINCT P1,P2 from Table1
то достаются только поля P1,P2

Если вот так:
select DISTINCT P1,P2,P3,P4 from Table1
то поля P3,P4 учавствуют в ключе уникальности, а этого не надо.

Запрос типа:
select  P3,P4,DISTINCT(P1,P2) from Table1
не прошёл :(
18 май 09, 11:12    [7192023]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8126
Приведите пример исходных данных и результат, который вы хотите из них получить.
18 май 09, 11:16    [7192069]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Игаев,

select  min(P3),min(P4),P1,P2 from Table1
group by P1,P2
18 май 09, 11:16    [7192070]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1519
 select P1,P2,P3,P4 
   from Table1
 where (P1,P2) in (select P1,P2 
                            from Table1
                           group by P1,P2)
18 май 09, 11:17    [7192074]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Добрый Э - Эх
Guest
group by по полям уникальности и любой из подходящих агрегатов на остальные поля
18 май 09, 11:17    [7192075]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Elic
Member

Откуда:
Сообщений: 29976
Игаев
Необходимо достать все записи у которых Р1 и Р2 уникальны, но при этом доставать и данные Р3,Р4.
Способов множество. Но прежде необходимо ответить на вопрос "Какие же значения Р3,Р4 из группы требуются?"
18 май 09, 11:17    [7192085]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Добрый Э - Эх
Guest

[offtop]
   Сразу видно: понедельник - день тяжёлый. 
Никто не работает, все на форумах сидят.
[/offtop]
18 май 09, 11:18    [7192096]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
.
Guest
_Alex_SMIRNOV_,

и чем это отличается от

 select P1,P2,P3,P4 
   from Table1

?
18 май 09, 11:23    [7192126]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
автор
Способов множество. Но прежде необходимо ответить на вопрос "Какие же значения Р3,Р4 из группы требуются?"


P3,P4 могут быть любыми, а сочетание P1,P2 должно быть уникальным.
Достать надо все поля.

Почитал про group by и если я правильно понял его работу, то мне подойдёт запрос:

select  * from Table1 group by P1,P2

Так???
18 май 09, 11:26    [7192142]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
.
Guest
Игаев,

а ты попробуй..
18 май 09, 11:27    [7192151]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Добрый Э - Эх
Guest
На такой запрос Oracle пошлет тебя лесом.
Это тебе не MySQL...
18 май 09, 11:27    [7192153]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Elic
Member

Откуда:
Сообщений: 29976
Игаев
Почитал про group by и если я правильно понял его работу, то мне подойдёт запрос:
select  * from Table1 group by P1,P2
Так???
"Пилите шура, пилите"
18 май 09, 11:28    [7192156]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Добрый Э - Эх
Guest
Elic
Игаев
Почитал про group by и если я правильно понял его работу, то мне подойдёт запрос:
select  * from Table1 group by P1,P2
Так???
"Пилите шура, пилите"
IMHO, бесполезно. Тут явно "ошибка в 17-й строке".
18 май 09, 11:29    [7192159]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
Добрый Э - Эх
На такой запрос Oracle пошлет тебя лесом.
Это тебе не MySQL...

Таки послал меня Oracle ....
18 май 09, 11:30    [7192170]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8126
Игаев
автор
Способов множество. Но прежде необходимо ответить на вопрос "Какие же значения Р3,Р4 из группы требуются?"
P3,P4 могут быть любыми, а сочетание P1,P2 должно быть уникальным.

select DISTINCT P1,P2, 1 AS P3, 2 AS P4 from Table1
:-)
18 май 09, 11:31    [7192177]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Добрый Э - Эх
Guest
Игаев
Добрый Э - Эх
На такой запрос Oracle пошлет тебя лесом.
Это тебе не MySQL...

Таки послал меня Oracle ....

Добрый Э - Эх
group by по полям уникальности и любой из подходящих агрегатов на остальные поля
18 май 09, 11:31    [7192179]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Wadim S
Member

Откуда: Ukraine
Сообщений: 178
Игаев
Необходимо достать все записи у которых Р1 и Р2 уникальны, но при этом доставать и данные Р3,Р4.

Если я правильно понял, то
select P1,P2,min(P3),min(P4) from Table1
group by P1,P2
having count(*)=1
18 май 09, 11:33    [7192202]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
.
Guest
Wadim S,

having count(*)=1
18 май 09, 11:40    [7192258]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Wadim S
Игаев
Необходимо достать все записи у которых Р1 и Р2 уникальны, но при этом доставать и данные Р3,Р4.

Если я правильно понял, то
select P1,P2,min(P3),min(P4) from Table1
group by P1,P2
having count(*)=1

зачем?
18 май 09, 11:41    [7192262]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
Wadim S

Если я правильно понял, то
select P1,P2,min(P3),min(P4) from Table1
group by P1,P2
having count(*)=1


Не работает. Не те сроки достаёт ....

SQL*Plus
select DISTINCT P1,P2, 1 AS P3, 2 AS P4 from Table1
:-)


Достаёт то что надо, но только вместо полей P3,P4 = 1,2

Добрый Э - Эх
group by по полям уникальности и любой из подходящих агрегатов на остальные поля


Подсобите, пожалуйста, примерчиком
18 май 09, 11:46    [7192313]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Красотка ;)
Guest
Такое чувство, что автор сам не знает, что хочет и зачум :D...
Пример данных, какой должен быть результат, принцип, по которому результат должен быть получен - в студию!
18 май 09, 12:00    [7192400]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
select P3,P4 from Docs where P1='1234' group by P3,P4
Записи достаёт те что надо, но данные только P3,P4. Если добавляю к select ещё какое-то поле, то ругается - "выражение не является выражением group by"
18 май 09, 12:00    [7192403]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8126
Игаев
SQL*Plus
select DISTINCT P1,P2, 1 AS P3, 2 AS P4 from Table1
:-)

Достаёт то что надо, но только вместо полей P3,P4 = 1,2
Ну да.
Вы же сами написали, что "P3,P4 могут быть любыми"...
Чем P3=1 и P4=2 хуже, чем другие любые?
18 май 09, 12:03    [7192431]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8126
SQL*Plus
Приведите пример исходных данных и результат, который вы хотите из них получить.
18 май 09, 12:04    [7192438]     Ответить | Цитировать Сообщить модератору
 Re: Одним запросом DISTINCT + другие поля  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
Красотка ;)
Такое чувство, что автор сам не знает, что хочет и зачум :D...
Пример данных, какой должен быть результат, принцип, по которому результат должен быть получен - в студию!


Например, таблица Docs (int P1, int P2, char P3, char P4):

1,2, 'Иванов', 'Иван'
1,2, 'Сидоров', 'Федя'
1,2, 'Соколов', 'Гриша'
2,3, 'Селезнёв', 'Саша'
Мне необходимо достать строки у которых неповторяющиеся комбинции P1 и P2

В данном примере это будут строки:

1,2, 'Иванов', 'Иван'
2,3, 'Селезнёв', 'Саша'

Если выполнять DISTINCT P1,P2, то получим данные 1,2 и 2,3, а надо и фамилии достать :)

И сам понял абсурдность своего вопроса - ведь непонятно какие фамилии доставать 1,2, 'Иванов', или 1,2, 'Сидоров' или 1,2, 'Соколов'................

То есть, то что указано в DISTINCT, тем и можно только оперировать.

Я прошу прошу прощения за беспокойство. Протупил. Вопрос не имеет ответа. Вопрос не имело смыла задавать. Ошибся. Таки понедельник, блин. БОЛЬШОЕ спасибо всем за соучастие!
18 май 09, 12:16    [7192523]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить