Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2013, 14:37   #1
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию Уникальные значения в строках

Подскажите пожалуйста, как решить следующую проблему:
Необходимо, чтобы в таблице были только уникальные значения в поле "1", "2", "3", причем в столбце "1", как "2", "3" могут быть одинаковые значения по столбцам), суть в том, чтобы одновременно в этих 3 строках были уникальные значения, относительно других строк? ( например:

1 2 3

1 12 13 13
2 12 11 11
3 12 13 13
4 12 11 14


необходимо удалить 1 из 2 повторяющихся строк.
erika13 вне форума Ответить с цитированием
Старый 29.05.2013, 16:33   #2
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

найти повторяющиеся записи у меня получилось:


Код:
SELECT First(Email.[Тема]) AS [Тема поле], First(Email.[Текст]) AS [Текст поле], First(Email.[Отимя]) AS [Отимя поле], First(Email.[Отадрес]) AS [Отадрес поле], Count(Email.[Тема]) AS Повторы
FROM Email
GROUP BY Email.[Тема], Email.[Текст], Email.[Отимя], Email.[Отадрес]
HAVING (((Count(Email.[Тема]))>1) AND ((Count(Email.[Отадрес]))>1));
Как их удалить, чтобыпо одной осталось?
erika13 вне форума Ответить с цитированием
Старый 29.05.2013, 16:49   #3
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

Грубо говоря, как удалить повторения, оставив при этом 1 запись?

Последний раз редактировалось erika13; 29.05.2013 в 16:53.
erika13 вне форума Ответить с цитированием
Старый 29.05.2013, 19:47   #4
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

В таблице Email должно присутствовать поле номера записи (например, типа счётчик). В приведенном примере - это поле "Код".
Удаляйте все записи из запроса "ЗапросКодовДляУдаления". Остальные запросы - служебные.
Вложения
Тип файла: rar #bd.rar (10.1 Кб, 19 просмотров)
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 30.05.2013, 00:03   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте erika13.
Хотя термин "..должно присутствовать.." от Myhaylo как утверждение не верен,
для идентификации и поддержания уникальности вполне можно обойтись индексом с заданной уникальностью
по всем полям таблицы. Но в Вашем случае, когда таблица уже наполнена, я абсолютно с ним согласен.
Вернуться к уникальности без уникального идентификатора применяя SQL в MS Access не удастся.
Или обработкой в цикле (что SQL MS Access не возможно только в VBA) или добавлением уникального идентификатора.
И тогда задача может быть решена подобной конструкцией:
Код:
DELETE FROM Email
WHERE Код Not In (SELECT First(Код) 
FROM (SELECT Тема & "\" & Текст & "\" & Отимя & "\" & Отадрес AS F1, Код
FROM Email) GROUP BY F1)
Евгений.

Последний раз редактировалось Teslenko_EA; 30.05.2013 в 00:16.
Teslenko_EA вне форума Ответить с цитированием
Старый 30.05.2013, 09:46   #6
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

Спасибо Вам, большущее!!! Все получилось!!
Подскажите пожалуйста, как обнулить поле типа счетчик (ключевое поле с уникальным идентификатором перед залитием данных в бд)?
erika13 вне форума Ответить с цитированием
Старый 30.05.2013, 10:10   #7
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

Все получилось! Спасибо большое!!! Индексы обновила.
erika13 вне форума Ответить с цитированием
Старый 30.05.2013, 13:18   #8
Dima36668
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 18
По умолчанию

Подскажите как быть с похожей задачей, только удалить надо обе записи - и оригинал и дублирующую, оставив только те у которых дублей не найдено?
Dima36668 вне форума Ответить с цитированием
Старый 30.05.2013, 14:14   #9
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

DELETE Email.Тема, Email.Текст, Email.Отимя, Email.Код
FROM Email
WHERE (((Email.Тема) In (SELECT [Тема] FROM [Email] As Tmp GROUP BY [Тема],[Текст],[Отимя] HAVING Count(*)>1 And [Текст] = [Email].[Текст] And [Отимя] = [Email].[Отимя])));
erika13 вне форума Ответить с цитированием
Старый 31.05.2013, 12:20   #10
erika13
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 44
По умолчанию

Мне снова нужна Ваша помощь))
У меня есть запрос:
SELECT StatusEmail AS ["статус"], count(*) AS количество
FROM (SELECT Mid([Тема],1,InStr(1,[Тема],":")-1) AS StatusEmail FROM [Select] WHERE InStr(1,[Тема],":")>1) AS InnerSubSelect
GROUP BY StatusEmail;

в результате которого у меня создается таблица, в которой есть 2 поля: "статус", "количество". Грубо говоря запрос считает количество в теме вариантов тем. Мне нужно модифицировать запрос и в некоторых случаях, (например, "не прочтено") показал поля для них (отимя, комуимя).
erika13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запросы на уникальные значения the_deer_one SQL, базы данных 4 23.05.2013 12:17
Загрузить уникальные значения колонки таблицы в Combobox Akemi БД в Delphi 2 07.06.2010 13:41
Уникальные значения Fezdipekla Microsoft Office Access 1 13.05.2010 11:02
Уникальные значения SwiP SQL, базы данных 6 07.05.2009 23:22
Уникальные значения в одну строку Iskin Microsoft Office Excel 9 08.03.2009 09:39