Контакты

Наибольший вклад в теги

Все теги (6)

Лучшие ответы пользователя

Все ответы (11)
  • Как написать SQL-запрос: вывод пользователей, кто отменял дважды заказ в течение получаса?

    Ответ на поверхности. Поскольку Вы знаете отправную точку и точное условие для включения пользователя в статистику, то достаточно воспользоваться конструкцией INNER JOIN для поиска пар одинаковых событий в временном промежутке, например наподобие вот этого:
    SELECT DISTINCT
      orders.user_id
    FROM
      orders
    INNER JOIN
      orders AS canceledOrders
    ON
      canceledOrders.user_id = orders.user_id
      AND canceledOrders.status = orders.status
      AND canceledOrder.order_id <> orders.order_id
      AND canceled.timestamp - orders.timestamp BETWEEN 0 AND 1800
    WHERE
      orders.status = 'cancel'
    Ответ написан
    Комментировать
  • Что за ошибку выдает Microsoft SQL Server Management Studio?

    Это означает, что Вы пытаетесь вставить в бинарное или текстовое поле данные больше максимально разрешённой длины. Посмотрите длины столбцов и вставляемых данных. Либо обрезайте данные, что бы они гарантированно могли разместиться в соответствующих полях.
    Ответ написан
    Комментировать
  • T-SQL. Как сделать UPDATE записей в таблице, у которых совпадает, например, GroupID, но разные TypeID?

    UPDATE UserDestination
    SET
      Number = UserSource.Number
    FROM
      Users AS UserSource
    INNER JOIN
      Users AS UserDestination
    ON
      UserSource.GroupID = UserDestination.GroupID
      AND UserSource.TypeID = 1
      AND UserDestination.TypeID = 3
    Ответ написан
    Комментировать
  • SQL запрос (UPDATE)?

    Синтаксис команды T-SQL UPDATE позволяет обновлять одну таблицу, но для фильтрации по аналогии с командой SELECT можно использовать множество таблиц.
    Т.е. В общем виде это выглядит так
    UPDATE
      ОбновляемаяТаблица
    SET
      ПолеОбновляемойТаблицы1 = Значение1
      , ПолеОбновляемойТаблицы2 = Значение2
    FROM
      ОбновляемаяТаблица
    LEFT OUTER JOIN
      ДополнительнаяТаблица
    ON
      ДополнительнаяТаблица.Ключ = ОбновляемаяТаблица.Ключ
    WHERE
      Условия фильтрации

    Для условий вашей задачи можно по этому шаблону преобразовать условия из вашего SELECT запроса в условия для UPDATE:
    UPDATE
      Account
    SET
      UsrLastActivityDate = GETDATE()
      , UsrProsrochen = 1
    FROM
      Account account -- Основная обновляемая таблица
    LEFT OUTER JOIN
     Activity activity -- дополнительная таблица с информацией о задачах
    ON
     activity.AccountId = account.Id
    WHERE 
     TypeId = '03a75490-53e6-df11-971b-001d60e938c6'
      AND DATEDIFF(dd, ModifiedOn ,GETDATE()) > 60
      AND activity.Id IS NULL -- аналогичный SELECT фильтр на отсутствие задач
    Ответ написан
    Комментировать
  • Как сделать выборку в MYSQL группируя один столбец и выбирая кол-во значений другого?

    Эту задачу можно решить в два подхода:
    1. Выясняем, для каких значений id_work выполняется условие наличия хотя бы по одному значению для type из множества (2, 4)
    2. Для найденных значений id_work выбираем полный набор данных для type из множества (2, 4)

    На практике это означает запрос использующий подзапрос для п. 1 и использование inner join дл п. 2:
    SELECT
      T.id
    FROM
      (
        SELECT
          id_work
        FROM
          T
        WHERE
          type IN (2, 4)
        GROUP BY
          id_work
        HAVING
          count(distinct type) = 2
      ) AS filteredIdWork
    INNER JOIN
      T
    ON
      T.id_work = filteredIdWork.id_work
      AND T.type IN (2, 4)
    Ответ написан
    Комментировать