Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры / 8 сообщений из 8, страница 1 из 1
20.05.2020, 16:54
    #39959952
RumaNO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Написать хранимую процедуру, осуществляющую прописку заданного жителя острова по указанному адресу. При прописке необходимо проверить, достаточно ли площади для прописки, предполагая, что на каждого проживающего должно приходиться не менее 20 м2.

Написал вот процедуру,как сделать условие 20м2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN
   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   WHERE House.Area/   --вот тут

   SELECT *
   FROM Occupant 
END
...
Рейтинг: 0 / 0
20.05.2020, 17:07
    #39959961
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
INSERT WHERE это у вас что то новое в синтаксисе. Читайте доки по команде INSERT

RumaNO
При прописке необходимо проверить

и? Наверное что то сделать...
...
Рейтинг: 0 / 0
20.05.2020, 17:12
    #39959966
RumaNO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
PizzaPizza, и как проверить?
...
Рейтинг: 0 / 0
20.05.2020, 17:30
    #39959973
RumaNO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Сделал еще вот так, но все равно ошибку выдает: Статистическое выражение не может использоваться в предложении WHERE, если оно не содержится во вложенном запросе предложения HAVING или в списке выбора
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN

   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   SELECT O.Id_People,O.Id_House,Start FROM Occupant AS O,House AS H
   WHERE H.Area/(SELECT COUNT(Id_People) 
   WHERE Id_House = @Id_House) > 20;

   SELECT *
   FROM Occupant;
END
...
Рейтинг: 0 / 0
20.05.2020, 17:32
    #39959976
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
RumaNO
все равно ошибку выдает:
Секретную?

А вот тут логическая ошибка:
RumaNO
Код: sql
1.
FROM Occupant AS O,House AS H

Вы не связали таблицы Occupant и House
...
Рейтинг: 0 / 0
20.05.2020, 17:34
    #39959977
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
RumaNO
Сделал еще вот так, но все равно ошибку выдает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN

   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   SELECT O.Id_People,O.Id_House,Start FROM Occupant AS O,House AS H
   WHERE H.Area/(SELECT COUNT(Id_People) 
   WHERE Id_House = @Id_House) > 20;

   SELECT *
   FROM Occupant;
END



Вы синтаксис insert пытаетесь угадать перебором?


https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
20.05.2020, 18:41
    #39960023
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
RumaNO
Написать хранимую процедуру, осуществляющую прописку заданного жителя острова по указанному адресу. При прописке необходимо проверить, достаточно ли площади для прописки, предполагая, что на каждого проживающего должно приходиться не менее 20 м2.

Написал вот процедуру,как сделать условие 20м2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN
   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   WHERE House.Area/   --вот тут

   SELECT *
   FROM Occupant 
END


Не проще ли сначала проверить, выполняется ли условие, и, если да, то делать Insert, если нет, то выход с ошибкой?
...
Рейтинг: 0 / 0
20.05.2020, 19:46
    #39960066
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
RumaNO
PizzaPizza, и как проверить?


нельзя проверить И вставить. Это отдельные операции.
Напишите алгоритм по русски

1. найти
2. сравнить с условием
3. если, то
...
n. вставить

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


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