Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 22 из 30 ПерваяПервая ... 1219202122232425 ... ПоследняяПоследняя
Показано с 211 по 220 из 297

Тема: Новый аппаратный журнал (Open Source)

  1. #211
    Цитата Сообщение от RX1AL Посмотреть сообщение
    ля нормального SQL есть две утилиты:
    Зачем мне утилиты? Мне просто нужен текст SQL запроса, если такой существует для данной задачи. Или "кусочек" кода в подарок.


  2. #212
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,812
    2 UA3GDW:
    А чтобы просто так нормально отработал merge для 2-х баз данных, где нет автоинкремента, не знаю. Тут надо писать уже сравнение всех полей или делать нормальный дамп по каждой базе. Но не через attach. Он всегда работает с ошибками.

    Цитата Сообщение от UA3GDW Посмотреть сообщение
    Зачем мне утилиты? Мне просто нужен текст SQL запроса, если такой существует ....
    А вот нет такого кода на SQL сразу... :( Сама задачка непростая. Так как тебе надо в запрос передавать всякий раз номер ROW_NUM. И потом с ним работать. А что будет, если такой же номер есть в другой базе, которую ты хочешь объединить? Будут грабли. Для этого и придумали механизм сравнения данных через Diffgrams. По-другому, даже не знаю, как решить такое.

    И зачем тебе такой мазохизм? Делай ты на нормальном автоинкременте с индексом. В 100 раз проще. И думать не надо. И объединять записи и сливать две/три или более баз в одну.

    PS. Крутани вот здесь, там вроде исходники есть. Кое-что напильником придется, но вроде чел решал твою задачку:
    https://ongardie.net/blog/sqlite-in-git/

    Для уникального ID, который ты знаешь всегда, код на SQL будет такой:
    SQL = "INSERT INTO [DB_NAME] SELECT * FROM TOMERGE.[DB_NAME] WHERE [YOUR_UNIQUE_ID] NOT IN (SELECT [YOUR_UNIQUE_ID] FROM DB_NAME)
    где в коде на шарпе сначала:
    string SQL = "ATTACH '" + fileLoc + "' AS TOMERGE";
    Но сам аттач работает криво. Но как ты будешь передавать свой ROW_NUM, не знаю. Он у тебя не уникальный.
    PS. Без нормальной хранимой процедуры с параметрами или двух/трех вложенных селектов не обойтись будет.
    Последний раз редактировалось RX1AL; 26.06.2015 в 00:22.
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21

  3. #213
    Цитата Сообщение от RX1AL Посмотреть сообщение
    А вот нет такого кода на SQL сразу...
    Есть, но для MySQL.

    SELECT @i := 0;UPDATE `table` SET `name`=CONCAT('Проект ', @i := @i+1) WHERE `type` = 1 ORDER BY `id`;

  4. #214
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,812
    Цитата Сообщение от UA3GDW Посмотреть сообщение
    Есть, но для MySQL.
    SELECT @i := 0;UPDATE `table` SET `name`=CONCAT('Проект ', @i := @i+1) WHERE `type` = 1 ORDER BY `id`;
    Роман, функция конкатенации CONCAT в SQL - немного не то, что тебе нужно. CONCAT преобразует типы аргументов к строковому типу данных и все. Она не делает проверку на твой ROW_NUM. Она просто добавляет, в твоем примере, к строке "Проект" цифру и все. То есть по сути: "Проект1", "Проект2" и т.д. Не более. Тебе же нужно совсем другое.
    PS. Ладно, на сегодня все. Завтра выставка и дня 3 меня не будет.

    Тебе же нужен именно MERGE и COMPARE, но с параметрами.
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21

  5. #215
    Цитата Сообщение от UA3GDW Посмотреть сообщение
    Вопрос к знатокам (если такие имеются).

    В таблице базы данных есть поле "ROW_NUM" типа Integer (Int64 для C#). Для каждой новой добавляемой записи значение этого поля всегда увеличивается на единицу, по сравнению со значением предыдущей записи (предыдущее значение всегда известно) (поле НЕ Autoincrement). Есть некоторый новый набор записей со своими значениями (любыми) поля "ROW_NUM". Требуется объединить новый набор записей с уже существующим и перестроить значения поля "ROW_NUM" в новом наборе таким образом, чтобы значение "ROW_NUM" первой записи нового набора было на единицу больше значения последней записи уже существующего набора, а все последующие значения этого поля в новом наборе продолжили нумерацию.
    Как реализовать на SQL для SQLite? Другие варианты?
    Фунция MAX есть?
    Она всегда вернёт последний номер...и +1 даст следующий...если я правильно понял проблему.
    73! Павел VA6AM Мой сайт А Кошка нарисована карандашом!

  6. #216
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,812
    Цитата Сообщение от VA6AM Посмотреть сообщение
    Фунция MAX есть?
    Она всегда вернёт последний номер...и +1 даст следующий...если я правильно понял проблему.
    Тут дело не в последнем номере, его то получить не проблема. Проблема в другом. У него есть, скажем две базы данных. В одной из них есть записи с номерами 2, 4, 5, 6, 8, 10, 15 (ROW_NUM), а в другой могут быть 3, 4, 5, 7, 8, 11, 14, 15, 17. И надо их объединить. Простой UNION здесь не прокатит, так как надо сравнивать и остальные поля на их правильность. Одного толку от знания ROW_NUM не будет. И что делать с теми ROW_NUM, которые одинаковы: удалять, не включать в селект или апдейтить? Решений несколько. Не совсем понятен подход к решению задачи. Зачем так сложно, когда можно на основе уникального автоинкрементного поля все сделать быстрее и надежнее? Пока непонятно.
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21

  7. #217
    Цитата Сообщение от UA3GDW Посмотреть сообщение
    Да, работает. Принцип такой же, как и в обычном OmniRig.
    работает не понятно, переключает только модуляцию, диапазон и частоту ни в какую ?
    Нажмите на изображение для увеличения. 

Название:	2015-06-26_181543.png 
Просмотров:	547 
Размер:	223.1 Кб 
ID:	205201
    а из окна ввода qso вообще не управляется ?
    Последний раз редактировалось RZ1ZR; 26.06.2015 в 18:28.
    73! Александр www.rz1zr.ru


  8. #218
    Цитата Сообщение от RX1AL Посмотреть сообщение
    Решений несколько. Не совсем понятен подход к решению задачи. Зачем так сложно, когда можно на основе уникального автоинкрементного поля все сделать быстрее и надежнее? Пока непонятно.
    Всё равно до конца не понял проблему.
    Вытащить можно только по какому-то уникальному полю...но если таблицы уже созданы неправильно, то бороться придётся с тем, что есть....т.е искать это поле и тогда нет проблем.

    Из моей практики, когда надо было сравнить свои таблицы и чужие(неправильные) применил

    DENSE_RANK() OVER (PARTITION BY t.intInvBID order by t.intto,t.intTransac tionID) as Num

    чтобы сделать этот самый уникальные номер.

    но это T-SQL.
    В Microsoft SQL 2012 много добавили всяких аналитических фукций для такого рода задач.
    73! Павел VA6AM Мой сайт А Кошка нарисована карандашом!

  9. #219
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,812
    Цитата Сообщение от VA6AM Посмотреть сообщение
    Всё равно до конца не понял проблему.
    Вытащить можно только по какому-то уникальному полю...но если таблицы уже созданы неправильно, то бороться придётся с тем, что есть....т.е искать это поле и тогда нет проблем. ....
    Разумеется, только уникальному. Я об этом, как раз Роману и написал. Но у него поле Int64 (ROW_NUM) и не уникальное. Честно говоря, не понимаю, зачем такой дизайн (мазохизм?) нужен. Может автор нам пояснит. И если есть возможность (пока база данных с таблицами не разрослась), то исправить что-то. Иначе без уникального поля сделать что-то будет просто изврат, и сорри, полный гемор...

    Да, функций то добавлено много в 2012/2014 SQL Server. Но Роман использует другую базу - SQLite, а там всех "плюшек" полезных нет. Я ему посоветовал сделать на основе Diffgrams, он пока не хочет. Хотя такой путь пока единственный, когда нет уникального поля. Так как Diffgrams сравнивает содержимое каждого поля, а также по внутренним таблицам (дампу) анализирует, что и когда было изменено.
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21


  10. #220
    Цитата Сообщение от RZ1ZR Посмотреть сообщение
    переключает только модуляцию, диапазон и частоту ни в какую ?
    Трансивер у вас какой?

    Цитата Сообщение от RZ1ZR Посмотреть сообщение
    а из окна ввода qso вообще не управляется ?
    Пока нет.

    Цитата Сообщение от UA3GDW Посмотреть сообщение
    Трансивер у вас какой?
    Сорри, на картинке нашёл.

Страница 22 из 30 ПерваяПервая ... 1219202122232425 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бумажный аппаратный журнал
    от LY3QN-Jurijus в разделе Для начинающих
    Ответов: 105
    Последнее сообщение: 05.05.2021, 02:32
  2. Аппаратный журнал радионаблюдателя
    от Дик в разделе Программное обеспечение
    Ответов: 52
    Последнее сообщение: 01.11.2013, 19:43
  3. Аппаратный журнал
    от RA0JFX-Амур в разделе Программное обеспечение
    Ответов: 738
    Последнее сообщение: 31.07.2010, 07:42
  4. Редактор схем-трассировщик KiCAD. Open Source
    от w6bvb в разделе Программное обеспечение
    Ответов: 3
    Последнее сообщение: 13.05.2008, 14:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •