Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja obliczająca srednią
sandra1023
post 15.06.2010, 19:07:29
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.06.2010

Ostrzeżenie: (0%)
-----


Mam takie tabelki :
  1. CREATE TABLE [dbo].[Student](
  2. [ID_Studenta] [int] NOT NULL,
  3. [Student_imie] [varchar](50) NOT NULL,
  4. [Student_nazwisko] [varchar](50) NOT NULL,
  5. [Student_data_ur] [datetime] NOT NULL,
  6. [ID_kierunek] [int] NOT NULL,
  7. [Nr_albumu] [int] IDENTITY(1,1) NOT NULL,
  8. [Semestr] [int] NOT NULL,
  9. [Data_rozp_studiow] [datetime] NOT NULL,
  10. [PESEL] [int] NOT NULL,
  11. [Adres] [nvarchar](max) NOT NULL,
  12. [Email] [varchar](50) NULL,
  13. [Uwagi] [nvarchar](max) NULL,
  14. CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
  15. (

i
  1. CREATE TABLE [dbo].[Archiwum](
  2. [ID_Student] [int] NOT NULL,
  3. [Student_imie] [varchar](50) NOT NULL,
  4. [Student_nazwisko] [varchar](50) NOT NULL,
  5. [Data_rozp_studiow] [datetime] NOT NULL,
  6. [Data_ukonczenia_studiow] [datetime] NOT NULL,
  7. [Nr_albumu] [int] NOT NULL,
  8. [PESEL] [int] NOT NULL,
  9. [ID__Kierunek] [int] NOT NULL,
  10. [Uwagi] [nvarchar](max) NULL,
  11. CONSTRAINT [PK_Archiwum] PRIMARY KEY CLUSTERED


i chcę żeby po ukończeniu studiów student był przenoszony do archiwum. Kombinowałam z tym wiele ale niestety jestem poczatkujaca. Mysle że można to zrobic za pomocą trigera który dla semestru>5 przenosi studenta do archiwum ale nie wiem jak to zapisać. Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
erix
post 15.06.2010, 19:31:42
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Uhm, ale po co przenosić do osobnej tabeli? Nie lepiej dać dodatkowe pole archiwum 0/1?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
sandra1023
post 15.06.2010, 19:40:43
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.06.2010

Ostrzeżenie: (0%)
-----


Niestety musi być usuwany z Studenta a jego dane archiwizowane w archiwum.


Jeszcze mam polecenie: Istnieje automatyczna rejestracja studenta po uzyskaniu wszystkich zaliczeń. Co prawda mam tabelke zaliczenia ale wydaje mi sie bardzo trudnym zadaniem połączeniem jej ze studentem. Więc może zrobie dodatkowy wiersz stan zaliczeń i jeżeli tam bedzie 1 to semestr+1. Niestety tez nie wiem jak to zapisać.
Go to the top of the page
+Quote Post
erix
post 15.06.2010, 19:49:03
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Masz jakieś zaliczenie z tego, czy jak?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
sandra1023
post 15.06.2010, 19:52:58
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.06.2010

Ostrzeżenie: (0%)
-----


Tak na zaliczenie. musze zrobić baze danych dziekanatu i mam do tego polecenia. Z większością dałam sobie radę ale najwiekszy problem mam z automatyczną rejestracją studenta na kolejny semestr i z przenoszeniem wartości z tabeli do tabeli.
Go to the top of the page
+Quote Post
erix
post 15.06.2010, 20:58:19
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No to pokaż, jak robisz; inaczej zamykamy, gdyż nie odrabiamy za kogoś prac domowych. Co innego, gdy jest inicjatywa.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
sandra1023
post 16.06.2010, 11:06:27
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.06.2010

Ostrzeżenie: (0%)
-----


zrobilam to tak:


  1. ALTER TRIGGER [dbo].[archiwu]
  2. ON [dbo].[Student]
  3. after INSERT,UPDATE
  4. AS
  5. IF ((SELECT semestr FROM Student)>5)
  6. begin
  7. UPDATE dbo.Student
  8. SET archiwum=1
  9. end


tylko ze po zrobieniu
  1. UPDATE dbo.Student
  2. SET Semestr=7
  3. WHERE Student_imie ='jan'


mam taki blad
  1. Msg 512, Level 16, State 1, Procedure archiwu, Line 5
  2. Subquery returned more than 1 value. This IS NOT permitted when the subquery follows =, !=, <, <= , >, >= OR when the subquery IS used AS an expression.
  3. The statement has been terminated.



Jak to naprawic?
Go to the top of the page
+Quote Post
trafas
post 29.01.2011, 00:02:14
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

Ostrzeżenie: (0%)
-----


Witam,

Problem tkwi w linii 5 trigera:

  1. IF ((SELECT semestr FROM Student)>5)


Zapytanie

  1. SELECT semestr FROM Student


zwraca więcej niż jedną wartość i dlatego się wywala cały triger.

Spróbuj zamienić na zapytanie poniżej:

  1. IF ((SELECT TOP 1 semestr FROM Student)>5)


Pozdrawiam.
Go to the top of the page
+Quote Post
prachwal
post 8.02.2011, 13:45:31
Post #9





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

Ostrzeżenie: (0%)
-----


jest taka wirtualna tabela jak Inserted z której można skorzystać w Triggerze to po primo

secundo a co się stanie jak zaktualizujemy więcej niż jednego studenta na raz?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:18