• Как сделать в MSSQL поиск дубликатов в одной из колонок, при условии совпадения по другой колонке и отсутствия дубликатов в третьей?

    @jimquery
    Попробуй такой вариант. У меня доступа нет к твоей таблице и бд, поэтому смог проверить только с первыми двумя условиями:
    SELECT id, project_id, sum_1, sum_2
    FROM [mytable] as tbl
    WHERE 
    sum_2 IN (
    SELECT sum_2
     FROM [mytable]
     WHERE project_id = tbl.project_id
     GROUP BY  project_id, sum_2
    HAVING count(sum_2) > 1)
    AND project_id IN (
        SELECT project_id
        FROM [mytable]
        GROUP BY  project_id, sum_2
        HAVING count(sum_2) > 1)


    По идее такой вариант должен быть рабочим:
    SELECT id, project_id, sum_1, sum_2
    FROM [mytable] as tbl
    WHERE 
    sum_1 IN (
    SELECT sum_1
     FROM [mytable]
     WHERE project_id = tbl.project_id
     GROUP BY  project_id, sum_1
    HAVING count(sum_1) < 2)
    sum_2 IN (
    SELECT sum_2
     FROM [mytable]
     WHERE project_id = tbl.project_id
     GROUP BY  project_id, sum_2
    HAVING count(sum_2) > 1)
    AND project_id IN (
        SELECT project_id
        FROM [mytable]
        GROUP BY  project_id, sum_2
        HAVING count(sum_2) > 1)
    AND project_id IN (
        SELECT project_id
        FROM [mytable]
        GROUP BY  project_id, sum_1
        HAVING count(sum_1) < 2)


    Ещё нужно учитывать, что код не оптимизированный для выполнения на рабочем сервере ввиду использования подзапросов.
    Ответ написан
    Комментировать
  • Как заменить в всех файлах проекта, фразу например, через ftp (деплой)?

    @jimquery
    Через ftp не знаю, если только поддержка shell-команд есть. Можно использовать утилиты командной строки. С помощью grep получить список файлов:
    grep -lR "искомая фраза" /var/www/deploy/
    С помощью sed произвести замену:
    sed -i -- 's/фраза для поиска/на что менять/' /var/www/deploy/../kakoy-to.file

    Можно использовать регулярные выражения в обоих командах.
    Ещё такой момент: если в искомых файлах фраза встречается несколько раз, то при замене нужно вызывать sed с глобальной опцией:
    sed -i -- 's/фраза для поиска/на что менять/g' /var/www/deploy/../kakoy-to.file

    Так же можно объединить эти команды для конвейерной обработки:
    sed -i -- 's/фраза для поиска/на что менять/g' $(grep -lR "фраза для поиска" /var/www/deploy/)

    Или просто указать маску для файлов, в которых нужно произвести замену:
    sed -i -- 's/фраза для поиска/на что менять/g' *.php
    Ответ написан
    Комментировать
  • Как запретить автоматическую сортировку при добавлении записи в DataGridView C#?

    @jimquery Автор вопроса
    Пока что сделал Workaround:

    Объявляем две переменные:
    DataRowView editingRowView   = null;
    bool addingRow = false;


    После чего задаем в дизайнере:
    groupHeadersBindingNavigator.AddNewItem = null;
    dataGridView.AllowUserToAddRows = false;


    Дальше при нажатии кнопки добавить запись в навигаторе:
    editingRowView = (DataRowView)groupheadersBindingSource.AddNew();
    addingRow = true;


    И при нажатии:
    void sportTypeComboBox_Click ..
    {
    if ((editingRowView != null) && (addingRow))
                {
                    groupheadersBindingSource.Position = groupheadersBindingSource.Find("HeaderID", editingRowView.Row["HeaderID"]);
                    addingRow = false;
                    editingRowView = null;
                }
    }

    Вот такой костыль получился. При этом автоматическая сортировка осталась, но указатель с текущей позиции восстанавливается.
    Ответ написан
    Комментировать