Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163

Не работает DELETE для "повторяющихся" строк

19.02.2024, 20:51. Показов 5332. Ответов 134

Студворк — интернет-сервис помощи студентам
Здравствуйте, добрые люди!
Долго колупался с ускорением заполнения базы и доколупался до хорошей для меня скорости наполнения, однако без граблей не обошлось, когда я опустил проверки на точность параметров при замене данных получил дублирование для одного набора ключей записей с разной точностью. Исходная тема (Импорт данных из файла в БД) короткая, да и проблема видна когда пытаюсь отладить макрос в самой БД.
Как видно из запроса есть 5 ключевых параметров и пара значимых полей в записи - это значение и его точность.

Чтобы было понятно, чем больше число тем ниже точность.

Итак нашел я замечательный пример и попробовал состряпать свой запрос на удаление повторяющейся записи с меньшей точностью. Для начала изобразил выборку, абы проверить правильно ли выбирает, оставил в последствии только те записи, что подлежат удалению:

SQL
1
2
3
SELECT a.* FROM Weather a,
(SELECT * FROM Weather) b
WHERE a.ID_MD = b.ID_MD AND a.DT = b.DT AND a.LAT = b.LAT AND a.LON = b.LON AND a.SOURCE = b.SOURCE AND a.QUAL > b.QUAL AND NOT ISNULL(a.ZNCH) AND NOT ISNULL(b.ZNCH)
Эта штуковина работает, однако по замыслу авторов для удаления этих записей замена SELECT a.* на DELETE a.* приводит к ошибке "Не возможно удаление записей из указанных таблиц", а справка говорит, что недостаточно прав в пяти вариациях... С чего бы? В свойствах запроса разрешения на удаление есть
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2024, 20:51
Ответы с готовыми решениями:

Клавиша delete не работает,а вот shift + delete работает
Ни ничего не могу удалить как обычно клавишей delete работает только при сочетании shift + delete W7 64 bit Добавлено через 2 часа...

1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале.
Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. Помогите,пожалуйста,завтра нужно...

Не работает функция для удаления повторяющихся символов в строке
Вместо удаления остается часть, например из EEEEEEE делается не E, а EEE к примеру, как исправить? string removeSymbols(string input) {...

134
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
22.02.2024, 20:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от POJIBOX Посмотреть сообщение
Над чем мы сейчас бьемся?
Как в том анекдоте:
Мы не страдаем алкоголизмом, мы им наслаждаемся!
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
22.02.2024, 20:50  [ТС]
Через try catch снес индекс, затем его нарисовал, нормально, но вот какая ерунда, при записи по схеме try INSERT catch UPDATE при строгом индексе получалось почти на 5000 записей больше, чем при загрузке с мусором и его очисткой... причем записи все уникальные я проверял
Воот теперь и думай а может фиг с ними с 8 минутами на чистую и 15 пожалуй при повторной...
0
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
22.02.2024, 21:00
Цитата Сообщение от POJIBOX Посмотреть сообщение
Можно конечно определить потолок скорости вычистив все операции с БД и оставив только распаковку и формирование строк, но все это муторно... что даст?
По сути даст только метрику насколько БД тормозит процесс. Если время значительно, то даст пищу для раздумья а нужно ли выбирать другой способ хранения. Ну а если 4-6 минут обновления несколько раз в день не критично, то оставляйте как есть.

Добавлено через 5 минут
Цитата Сообщение от POJIBOX Посмотреть сообщение
Через try catch снес индекс, затем его нарисовал, нормально, но вот какая ерунда, при записи по схеме try INSERT catch UPDATE при строгом индексе получалось почти на 5000 записей больше, чем при загрузке с мусором и его очисткой... причем записи все уникальные я проверял
Воот теперь и думай а может фиг с ними с 8 минутами на чистую и 15 пожалуй при повторной...
Что бы понять почему так произошло, нужно 3 БД в следующих состояниях

- Созданная на try catch
- Записи вставлены все, до вычистки
- Записи вставлены все, после вычистки

Дальше станет понятно что запрос вычистки удалили лишнего и как это исправить
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
22.02.2024, 21:07  [ТС]
Цитата Сообщение от Swa111 Посмотреть сообщение
Что бы понять почему так произошло, нужно 3 БД в следующих состояниях
Этим я занялся, только можно сделать 2 БД на первом и втором принципе и посмотреть кого потеряли, а потом уже думать как его потеряли, может будет понятно из самих данных
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,959
Записей в блоге: 4
22.02.2024, 21:31
POJIBOX,
попыталась на 3 -х координатах понять таблицы - увы вопросы не пропали
какие значения должны остаться
UDT дата измеренияID_MD тип измеренияDT дата отчетаQUAL качестSOURCE источникZNCH значенНомер для ссылки 
05.02.2024 00:0012399461205.02.2024 00:002500745374.501 
05.02.2024 00:0012399461205.02.2024 00:00125045381.002 
05.02.2024 00:0012399461205.02.2024 06:002500745360.003 
05.02.2024 00:0012399461205.02.2024 06:00125045357.004 
05.02.2024 00:0012399461205.02.2024 12:002500745367.385 
05.02.2024 00:0012399461205.02.2024 12:00125045368.006 
05.02.2024 00:0012399461205.02.2024 18:002500745399.047 
        
05.02.2024 00:0012399481205.02.2024 00:002500742881.398 
05.02.2024 00:0012399481205.02.2024 00:00125042894.009 
05.02.2024 00:0012399481205.02.2024 06:002500742857.7410 
05.02.2024 00:0012399481205.02.2024 06:00125042859.0011 
05.02.2024 00:0012399481205.02.2024 12:002500742849.8012 
05.02.2024 00:0012399481205.02.2024 12:00125042864.0013 
05.02.2024 00:0012399481205.02.2024 18:002500742870.4414 
        
05.02.2024 00:0012399496205.02.2024 00:002500741369.6731 
05.02.2024 00:0012399496205.02.2024 00:00125041379.0032 
05.02.2024 00:0012399496205.02.2024 06:002500741344.4733 
05.02.2024 00:0012399496205.02.2024 06:00125041348.0034 
05.02.2024 00:0012399496205.02.2024 12:002500741327.3135 
05.02.2024 00:0012399496205.02.2024 12:00125041347.0036 
05.02.2024 00:0012399496205.02.2024 18:002500741343.1937 
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
22.02.2024, 21:36  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
какие значения должны остаться
Ваши выборки уникальны все должны остаться
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,959
Записей в блоге: 4
22.02.2024, 21:52
Цитата Сообщение от POJIBOX Посмотреть сообщение
Ваши выборки уникальны все должны остаться
они уникальны из-за даты отчета и источника, а без их учета должно остаться только 3 записи(по дате измерения, координатам и типе измерения)
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
22.02.2024, 22:02  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
они уникальны из-за даты отчета и источника, а без их учета должно остаться только 3 записи(по дате измерения, координатам и типе измерения)
Я знаю только, что у меня должно храниться и как, а то, что Вы хотите придумать или объяснить мне не понятно.
В принципе, если отказаться от учета всех метрик, можно вообще пустую базу оставить, следуя Вашей логике
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,959
Записей в блоге: 4
22.02.2024, 22:40
POJIBOX,
видимо я не понимаю, какая из дат DT или UDT у вас основная
какая из дат соответствует факту измерения, а какая всевозможным корректировкам
ID_MDDTLATLONSOURCEZNCHUDTQUALPDT
12399461205.02.2024 18:00475004375045209.5005.02.2024 18:0025000
12399461205.02.2024 18:00475004375045210.0005.02.2024 18:0012500
12399461205.02.2024 18:004750043750745209.0405.02.2024 00:0025000

у меня в этой задаче - логика чайника, так как я не знаю ваших расчетов
поэтому мои встречные вопросы основаны на слове почему
UDTDT474
05.02.2024 00:0005.02.2024 00:001883720475
05.02.2024 00:0005.02.2024 06:002047521294
05.02.2024 00:0005.02.2024 12:002065721294
05.02.2024 00:0005.02.2024 18:00510920865
05.02.2024 00:00***06.02.2024 00:005109 
05.02.2024 18:0005.02.2024 18:0028028 
    
06.02.2024 00:0006.02.2024 00:002861321294
06.02.2024 00:0006.02.2024 06:002065721294
06.02.2024 00:0006.02.2024 12:002065721294
06.02.2024 00:0006.02.2024 18:002065721294
06.02.2024 00:0007.02.2024 00:002067021294
06.02.2024 00:0007.02.2024 06:002129421294
06.02.2024 00:0007.02.2024 12:002067021294
06.02.2024 00:0007.02.2024 18:002129421294
06.02.2024 00:0008.02.2024 00:002129421294
06.02.2024 00:0008.02.2024 06:0019656 
06.02.2024 00:0008.02.2024 12:002129421294
06.02.2024 00:0008.02.2024 18:0019032 
06.02.2024 00:0009.02.2024 00:002047521294
06.02.2024 00:0009.02.2024 12:0020475 
06.02.2024 00:0010.02.2024 00:00 20475
06.02.2024 00:0011.02.2024 00:00 21294
06.02.2024 00:0012.02.2024 00:00Почти неделя15977
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
22.02.2024, 23:27  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
у меня в этой задаче - логика чайника, так как я не знаю ваших расчетов
поэтому мои встречные вопросы основаны на слове почему
Я на 5 странице уже писал логику, теперь совсем для чайников:
Когда вы заходите в приложение "чья-то погода", что вы имеете:
- Вам нужен набор интересующих данных (параметров погоды) ID_MD у источника параметров погоды может быть больше, чем Вам нужно;
- для каких то городов (у меня это точки) задаются координатами LAT и LON;
- нужно посмотреть ПРОГНОЗ на определенную дату-время DT;
- необходимо выбрать от кого прогноз (например Яндекс или Штатовский) SOURCE;
- прогноз может быть разной точности на местности QUAL, но меня интересует, чтобы был и по возможности с лучшей точностью;
- собственно значение параметра погоды для каждой интересующей точки ZNCH и его неразрывное свойство PDT, но можете просто удалить его из таблицы, чтобы глаз не мозолил;
- ВСЕ это Вы смотрите в момент времени UDT (упрощенно), на самом деле прогноз сделан в какое-то время и действует до следующего прогноза.

Далее, вновь выходящий прогноз изменяет ZNCH в существующих прогнозах и добавляет записи с новыми временами DT.

При этом остаются неизменными данные которые старее времени выхода прогноза. Они используются во многих расчетах потому как там берется накопление за период и они нужны, как минимум за пять суток.

ВЫ НЕ МОЖЕТЕ узнать характер данных не открыв файл!

Все! Никакой оптимизации невозможно, разве что усложнить таблицы и связи для разделения НЕКОТОРЫХ (НЕ ВСЕХ!!!) параметров по источникам - МНЕ ЭТО НЕ НУЖНО, проще держать пустые поля.

Добавлено через 8 минут
Цитата Сообщение от shanemac51 Посмотреть сообщение
какая из дат соответствует факту измерения, а какая всевозможным корректировкам
Есть дата-время прогнозируемая DT
и дата-время составления прогноза UDT
в моем случае прогноз составляется каждые 6 часов на несколько суток вперед.
Самое главное, я его НЕ СОСТАВЛЯЮ - я его использую, т.е. получаю, декодирую, забиваю в БД и потом выдаю обработанным пользователю в программе.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,959
Записей в блоге: 4
23.02.2024, 10:29
Цитата Сообщение от POJIBOX Посмотреть сообщение
Есть дата-время прогнозируемая DT
и дата-время составления прогноза UDT
значит ли это, что 06.02.2024 составили прогноз на 7 дней для данной точки
но ведь его могли пересоставить 8-го ( для 5 дней) или 10-го(для 3 дней)

мд=Геопотенциальная высота (500mb)

ID_MDDTLATLONSOURCEZNCHUDTQUALPDT
12399461206.02.2024 00:005125030000745253.1306.02.2024 00:0025000
12399461206.02.2024 06:005125030000745291.2806.02.2024 00:0025000
12399461206.02.2024 12:005125030000745333.3106.02.2024 00:0025000
12399461206.02.2024 18:005125030000745357.9106.02.2024 00:0025000
12399461207.02.2024 00:005125030000745366.5506.02.2024 00:0025000
12399461207.02.2024 06:005125030000745350.5206.02.2024 00:0025000
12399461207.02.2024 12:005125030000745322.0006.02.2024 00:0025000
12399461207.02.2024 18:005125030000745274.2506.02.2024 00:0025000
12399461208.02.2024 00:005125030000745262.4206.02.2024 00:0025000
12399461208.02.2024 12:005125030000745278.7406.02.2024 00:0025000
12399461209.02.2024 00:005125030000745328.4406.02.2024 00:0025000
12399461210.02.2024 00:005125030000745410.3906.02.2024 00:0025000
12399461211.02.2024 00:005125030000745498.1906.02.2024 00:0025000
12399461212.02.2024 00:005125030000745553.1006.02.2024 00:0025000
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
23.02.2024, 11:37  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
значит ли это, что 06.02.2024 составили прогноз на 7 дней для данной точки
но ведь его могли пересоставить 8-го ( для 5 дней) или 10-го(для 3 дней)
Мне кажется что Вы меня троллите...
Я Вам расписал постом выше, все как для детского сада, нужно просто читать ВСЕ, а не пробегать по диагонали. Естественно ЗНАЧИТ! Каждые 6 часов выходит новый прогноз и данные прогноза обновляются, а также верхняя граница прогноза сдвигается +6 часов.
Что тут непонятного?
0
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
23.02.2024, 11:47  [ТС]
Уж не знаю что может быть с компом, но метод Try Catch по заполненной базе дал жару на 55 минут, сравнимо с предварительным чтением и проверкой данных. наличие "лишних" данных скорее всего объяснится различием алгоритма декодирования для высокого и низкого разрешения, а метод Try Catch никогда не удаляет записи, а только обновляет их, а во втором методе вырезается диапазон.
Ладно, если есть у кого настроенный шаблон вырежьте пожалуйста отличия баз, думаю там должны будут остаться только граничные координаты.
0
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
23.02.2024, 12:10
Разница в 4849 метрик.
Вложения
Тип файла: zip difference.zip (38.0 Кб, 9 просмотров)
1
 Аватар для POJIBOX
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
23.02.2024, 13:08  [ТС]
Цитата Сообщение от Jamaica Посмотреть сообщение
Разница в 4849 метрик.
Спасибо за Дифф!

Выяснилось совсем другое, неувязочка в алгоритме раскодирования, я сносил диапазон раньше, чем проходили последние проверки, а для этого параметра формат записи какой-то неудачный, вместо 0 рисуют пустое значение... Место экономят.
В итоге подправил теперь метрик на 4 тыщи больше! А это не плохо, главное чтобы я не ошибался и файл был не битый действительно.

Добавлено через 4 минуты
По итогу самое простое для меня решение:
- стирать диапазон, с условием на новизну или более высокое качество;
- писать в этот диапазон раскодированные значения;
- образовавшийся мусор в виде дубликатов сносить оптом по окончанию пакета.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2024, 13:08

Для линейного вещественного массива найти произведение всех повторяющихся и не повторяющихся элементов
Для линейного вещественного массива Х найти произведение всех: а) повторяющихся элементов б) не повторяющихся элементов Добавлено...

Как вызвать "Delete" для строк?
with lst1.Items do for i:=1to TextEnd do begin s:=Strings; if Pos('(compInst',s)>0then begin ...

Стандартная функция delete в Eclipse работает а в AndroidStudio не работает
case R.id.btnDelete: {//Кнопка удаление последнего символа ...

Почему не работает Update, но работает аналогичный Delete?
В xmal есть datagrid в него подтянута из базы информация. Название и количество. Надо сделать во viewmodel кнопки delete и update. Delete ...

Использование строк: Функция Delete(s1, s2)
Здравствуйте! В общем, мне нужно было создать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы, встречающиеся в строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
135
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru