Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запрос на удаление дубликатов / 6 сообщений из 6, страница 1 из 1
10.01.2017, 16:58
    #39381688
Alewteena1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
Всем привет!
Подскажите пожалуйста, как удалить дублированные записи такого типа:
--------------------------
n ch1 ch2
--------------------------
1 a b
2 b a
3 g d
4 a x
5 a y
6 y a
7 x a
--------------------------
Должны удалиться дубликаты, где значения ch1 и ch2 пересекаются есть строка 1 a b строка 2 b a ее дублирует, т.е. должны остаться только эти значения:
--------------------------
n ch1 ch2
--------------------------
1 a b

3 g d
4 a x
5 a y

--------------------------
...
Рейтинг: 0 / 0
10.01.2017, 17:03
    #39381690
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
Записи где находятся? В массиве, в таблице на SQL сервере или еще где.
Какими средствами надо удалять?
...
Рейтинг: 0 / 0
10.01.2017, 17:33
    #39381715
Alewteena1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
Dima TЗаписи где находятся? В массиве, в таблице на SQL сервере или еще где.
Записи в таблице, на postgresql

Dima TКакими средствами надо удалять?
Запросом к БД на postgres,,
Там изначально имеется таблица к примеру такая:
-----------------
1 a
2 b
3 c
4 x
5 y
и т.п.
-----------------
я делаю join на ту же табл, чтобы получить
-------------
n ch1 ch2
-------------
1 a b
2 a c
3 a y
и т.д.
--------------
Но получается такое задвоение как я написала раньше:
--------------------------
n ch1 ch2
--------------------------
1 a b
2 b a
3 a c
4 c a
5 a y
6 y a
--------------------------
...
Рейтинг: 0 / 0
10.01.2017, 17:50
    #39381729
Alewteena1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
Dima T,

Вообще, запрос выглядит вот так:
авторSELECT *
FROM channels ch1
JOIN channels ch2 ON ch1.label = ch2.label AND ch1.chid <> ch2.chid
WHERE ch1.layerrate = 'VC12'::text AND ch2.layerrate = 'VC12'::text AND ch1.label !~~ 'Tr%'::text AND ch1.label !~~ 'REZERV%'::text
ORDER BY ch1.label;

Т.е. имеется табл channels в которой одна строчка - это половинка группы(того, что нужно мне получить), и в ней же есть другая строчка, которая должна "склеится" со своей половинкой, у них один label, но разный chid
Допустим, у нее 7000 строк, 10 столбцов, нужно получить табл из 3500 строк и 20 столбцов, а пока что получается 7000 строк и 20 столбцов, и никак не могу их правильно отфильтровать... или может изначально выбрать...
...
Рейтинг: 0 / 0
10.01.2017, 18:46
    #39381782
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
Alewteena1,

Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM channels ch1
JOIN channels ch2 ON ch1.label = ch2.label AND ch1.chid  <  ch2.chid
WHERE ch1.layerrate = 'VC12'::text AND ch2.layerrate = 'VC12'::text AND ch1.label !~~ 'Tr%'::text AND ch1.label !~~ 'REZERV%'::text
ORDER BY ch1.label;
...
Рейтинг: 0 / 0
11.01.2017, 09:09
    #39382015
Alewteena1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на удаление дубликатов
White Owl,

Спасибо огромное! Гениально!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запрос на удаление дубликатов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]