Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 204
от 17.01.2007, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 400, Экспертов: 46
В номере:Вопросов: 1, Ответов: 5


Вопрос № 70578: Здраствуйте, вопрос по SQL! Подскажите как решить следующую задачу: нужно скопировать данные из одной таблицы в другую. Но есть повторяющиеся значения атрибута, который в новой таблице должен являться первичным (уникальным) ключом (у уникального ключ...

Вопрос № 70.578
Здраствуйте, вопрос по SQL! Подскажите как решить следующую задачу: нужно скопировать данные из одной таблицы в другую. Но есть повторяющиеся значения атрибута, который в новой таблице должен являться первичным (уникальным) ключом (у уникального ключа не может быть повторяющихся значений). Вот и сложность: как извлечь строки таблицы оператором select только с уникальными значениями?
СУБД Oracle 10i
Заранее благодарен
Отправлен: 12.01.2007, 07:14
Вопрос задал: Попов Николай (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Heartwork
Здравствуйте, Попов Николай! Используйте опцию DISTINCT.
SELECT DISTINCT Attribute FROM Table

Рекомендую их куда-нибудь выгрузить в другую таблицу. Однако при таком подходе (использование в качестве первичного ключа бывшего неуникального значения) потеря данных неизбежна при условии, если вы планируете распрощаться с текущей таблицей.
---------
Вода - Это Огромная Дорога Среди Красоты
Ответ отправил: Heartwork (статус: 1-ый класс)
Ответ отправлен: 12.01.2007, 08:10
Оценка за ответ: 5

Отвечает: Vasylega
Здравствуйте, Попов Николай!

Хочу дополнить ответ Данила.
Если в исходной таблицы повторяюющиеся значения, то при переносе их в новую таблицу:
- их надо объединять по определенному алгоритму (например суммирование);
- либо игнорировать;
В первом случае можно для второй таблицы сделать триггер на событие insert и заносить в него информацию спомощью select с обработкой повторяющихся строк.
Во втором случае просто (уже сказано в предыдущем ответе)
Ответ отправил: Vasylega (статус: 1-ый класс)
Ответ отправлен: 12.01.2007, 08:29

Отвечает: Grigory
Здравствуйте, Попов Николай!
Для извлечения уникальных значений используется DISTINCT:
SELECT DISTINCT(ИМЯ ПОЛЯ) FROM TABLE1;

Удачи!
Ответ отправил: Grigory (статус: 10-ый класс)
Ответ отправлен: 12.01.2007, 17:05
Оценка за ответ: 5
Комментарий оценки:
Всем большое спасибо за ответы! Поставил DISTINCT в запрос и все получилось

Отвечает: Santana
Здравствуйте, Попов Николай!
я так понимаю надо исключить из выборки те уникальные ключи которые уже есть в целевой таблице? если оно, поробуй так

insert into target
select * from source
where id not in (select id from target)
Ответ отправил: Santana (статус: 8-ой класс)
Ответ отправлен: 12.01.2007, 18:56

Отвечает: Игорь Елизаров
Здравствуйте, Попов Николай!
Для формирования таблицы-вставки можно применить группировку данных по нужному атрибуту, при этом для остальных полей можно будет выбрать групповые операции (минимальное, максимальное или среднее значение, сумма)

например, берем общую сумму по ИД, и дату последней операции по ИД
select id , sum(cost) as [Общая Сумма], max(date_input) as [посленяя дата операции]
from test
group by id

Ответ отправил: Игорь Елизаров (статус: 9-ый класс)
Ответ отправлен: 12.01.2007, 19:05


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.40 beta от 14.01.2007
Яндекс Rambler's Top100

В избранное