Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая процедура / 8 сообщений из 8, страница 1 из 1
26.12.2021, 13:12
    #40123124
Sunny2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Здравствуйте, помогите пожалуйста со следующим вопросом.
Есть база данных содержащая следующие таблицы:
Таблица Customers:
[CustomerID] [CompanyName]

Таблица Product:
[ProductID] [ProductName] [UnitPrice]

Таблица Orders:
[OrderID] [CustomerID]

Таблица OrderDetailes:
[OrderID] [ProductID] [Quntity]

Необходимо создать хранимую процедуру, которая по идентификатору клиента возвращает количество товара, общую стоимость, количество заказов. После задания модифицировать процедуру так, чтобы ее код был зашифрованным.

Не могу сообразить как это сделать.
...
Рейтинг: 0 / 0
26.12.2021, 13:14
    #40123127
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Sunny2
Здравствуйте, помогите пожалуйста со следующим вопросом.
Есть база данных содержащая следующие таблицы:
Таблица Customers:
[CustomerID] [CompanyName]

Таблица Product:
[ProductID] [ProductName] [UnitPrice]

Таблица Orders:
[OrderID] [CustomerID]

Таблица OrderDetailes:
[OrderID] [ProductID] [Quntity]

Необходимо создать хранимую процедуру, которая по идентификатору клиента возвращает количество товара, общую стоимость, количество заказов. После задания модифицировать процедуру так, чтобы ее код был зашифрованным.

Не могу сообразить как это сделать.


Что именно вы не можете сообразить? Давайте ваш вариант, пусть и кривой, посмотрим.
...
Рейтинг: 0 / 0
26.12.2021, 16:53
    #40123179
Sunny2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Ну. я если честно пока только как количество заказов посчитать.
Код: sql
1.
2.
3.
4.
5.
CREATE PROCEDURE Customers_Data
AS
BEGIN
	SELECT SUM(OrderID) FROM Orders group by CustomerID
END



Вопрос в том как CustomerID привязать к OrderID.

Думаю как-то так:
SELECT OrderID FROM Orders AS CID group by CustomerID
...
Рейтинг: 0 / 0
26.12.2021, 17:01
    #40123180
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Sunny2
Ну. я если честно пока только как количество заказов посчитать.
Код: sql
1.
2.
3.
4.
5.
CREATE PROCEDURE Customers_Data
AS
BEGIN
	SELECT SUM(OrderID) FROM Orders group by CustomerID
END



Вопрос в том как CustomerID привязать к OrderID.

Думаю как-то так:
SELECT OrderID FROM Orders AS CID group by CustomerID


Как связан ваш вопрос с этим запросом?
И если вы сами понимаете зачем вы так написали, то вам тут никто больше не нужен
...
Рейтинг: 0 / 0
26.12.2021, 19:49
    #40123203
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Sunny2
Ну. я если честно пока только как количество заказов посчитать.
Код: sql
1.
SELECT SUM(OrderID) FROM Orders group by CustomerID

Этим запросом вы считаете сумму номеров заказов. Потому что функция SUM считает сумму.
Например, вы сделали 2 заказа в Озоне, вам пришла СМС: "номера ваших заказов 2021122671 и 202112173"
Сумма номеров заказов получается 2021122671 + 20211226173 = 22232348844.

А количество считается функцией count

Sunny2
количество товара, общую стоимость, количество заказов.
Код: sql
1.
SUM(Quntity), SUM(UnitPrice), COUNT(distinct OrderID)
...
Рейтинг: 0 / 0
27.12.2021, 15:10
    #40123383
Sunny2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Да точно здесь COUNT нужен. А как дальше всё таки?
Хотя бы примерно.
...
Рейтинг: 0 / 0
27.12.2021, 15:48
    #40123397
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Sunny2,

найдите какой-нибудь учебник по запросам для начинающих... Вы что, будете за каждым чихом на форум бегать?
...
Рейтинг: 0 / 0
27.12.2021, 16:02
    #40123401
PaulYoung
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Sunny2,

слепо не копируй, это нужно адаптировать под себя (надеюсь, сумеешь сам)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
-- тестовые данные
drop table if exists #Customers;
create table #Customers (
    [CustomerID] int,
    [CompanyName] varchar(255)
);

drop table if exists #Product;
create table #Product (
    [ProductID] int,
    [ProductName] varchar(255),
    [UnitPrice] money
);

drop table if exists #Orders;
create table #Orders (
    [OrderID] int,
    [CustomerID] int
);

drop table if exists #OrderDetailes;
create table #OrderDetailes (
    [OrderID] int,
    [ProductID] int,
    [Quntity] int
);

insert into #Customers
(CustomerID, CompanyName)
values
(1, 'Компания 1'),
(2, 'Компания 2'),
(3, 'Компания 3');

insert into #Product
(ProductID, ProductName, UnitPrice)
values
(1, 'Продукт 1', 12.50),
(2, 'Продукт 2', 10.00),
(3, 'Продукт 3', 99.95);

insert into #Orders
(OrderID, CustomerID)
values
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3);

insert into #OrderDetailes
(OrderID, ProductID, Quntity)
values
(1, 1, 5),
(1, 2, 3),
(1, 3, 2),
(2, 2, 7),
(2, 3, 4),
(3, 1, 10),
(4, 2, 4),
(4, 1, 6),
(5, 1, 7),
(5, 2, 5),
(3, 3, 4);

go
-- процедура
create or alter proc #get_customer_totals
@customer_id int
as
begin
    set nocount on;

    -- количество заказов, количество товара, общая стоимость
    select
        count(distinct o.OrderID) as orders_qty,
        isnull(sum(d.Quntity), 0) as total_qty,
        isnull(sum(d.Quntity * p.UnitPrice), 0) as total_price
    from #Orders AS o
    left join #OrderDetailes AS d on d.OrderID = o.OrderID
    left join #Product as p on p.ProductID = d.ProductID
    where o.CustomerID = @customer_id

    return;
end;
go
-- тест
exec #get_customer_totals
    @customer_id = 1;

exec #get_customer_totals
    @customer_id = 2;

exec #get_customer_totals
    @customer_id = 3;
go
-- убрать за собой
drop table if exists #Customers;
drop table if exists #Product;
drop table if exists #Orders;
drop table if exists #OrderDetailes;
drop proc if exists #get_customer_totals
go

...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая процедура / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]