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

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

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

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

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

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

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

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

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

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

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


Что именно вы не можете сообразить? Давайте ваш вариант, пусть и кривой, посмотрим.
...
Рейтинг: 0 / 0
Хранимая процедура
    #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
Хранимая процедура
    #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
Хранимая процедура
    #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
Хранимая процедура
    #40123383
Sunny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да точно здесь COUNT нужен. А как дальше всё таки?
Хотя бы примерно.
...
Рейтинг: 0 / 0
Хранимая процедура
    #40123397
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sunny2,

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


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