Как получить количество записей, обновленных в таблице, с помощью SQL Server?

#sql #sql-server #tsql #sqltransaction

#sql #sql-сервер #tsql #sqltransaction

Вопрос:

Моя задача — показать количество товаров, доставленных владельцем магазина [идентификатор пользователя] за последний час. Ниже приведены конструкции таблиц [Заказать родительскую таблицу] [Заказать дочернюю таблицу]

Заказать родительскую таблицу:

введите описание изображения здесь

Дочерняя таблица:

введите описание изображения здесь

Элементы сканируются с помощью считывателя штрих-кодов, после сканирования они обновляются в базе данных, после выполнения заказа обновляется измененный штамп.

Как подойти к этому сценарию? Нужно ли мне изменять дизайн базы данных или я могу использовать текущий дизайн для получения набора результатов?

Мой вывод: во внешнем интерфейсе,

Количество последних часов = 10

Комментарии:

1. Не могли бы вы обновить результаты в виде текста

Ответ №1:

Предполагая, что столбец [Item Placed] предоставит количество элементов, которые будут доставлены.

 SELECT SUM([Item Placed]) 
FROM [Order parent table] OP
  JOIN [Order child table] OC ON OP.ID=OC.OrderID
WHERE OP.OrderStatus='D'  
   AND DATEDIFF(MINUTE, OP.[Order Modified Timestamp], GETDATE()) <= 60
   AND [user Id] = 1 --mention the user id here
  --AND OC.[Item Status]='D' --Apply this filter with valid status if you require child table stus
  

Комментарии:

1. получил набор результатов, но я смотрю глубже. можно ли с вами пообщаться?

2. конечно .. но как .. не использовал его .. 🙂

Ответ №2:

Это может помочь:

 SELECT  ord.[User Id] ,
        SUM(ISNULL(oc.ItemCount, 0)) Items
FROM    [Order] ord
        LEFT JOIN ( SELECT  [Order ID] ,
                            COUNT(DISTINCT [Item Name]) ItemCount
                    FROM    [OrderChild] oc
                    GROUP BY [Order ID]
                  ) oc ON ord.[ID] = oc.[Order ID]
WHERE   [Order Status] = 'D'
        AND DATEDIFF(MINUTE, [Order Modified Timestamp], GETDATE()) <= 60
GROUP BY ord.[User Id];
  

Комментарии:

1. статус заказа здесь не требуется, мой вопрос в том, сколько товаров он доставил за последний час.

2. удалите фильтр [Статус заказа] = ‘D’, чтобы получить то, что вы хотите от моего запроса. И результатом будут элементы, доставленные каждым пользователем в вашу таблицу [Order]