Βοήθεια με Stored Procedure

Συζητήσεις για τον Microsoft SQL Server

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
argate7
Δημοσιεύσεις: 233
Εγγραφή: 30 Σεπ 2009 02:38

Βοήθεια με Stored Procedure

Δημοσίευση από argate7 » 17 Δεκ 2009 16:17

Καλησπέρα σας,

Έχω φτιάξει μια μικρή βάση δεδομένων στον MS SQL SERVER 2005 και έχω τουλάχιστον 1 πίνακα. Ο πίνακας αυτός είναι ο tblStudents.
Μέσα στον πίνακα των μαθητών έχουμε τα εξής πεδία :

Students_ID int primary key not null identity(1,1),
Students_Name varchar(100),
Students_Surname varchar(100),
Students_Year varchar(100)

Θέλω να κάνω ακόμα ένα πίνακα με τη βαθμολογία. Σκέφτηκα να τον κάνω έτσι :

create table Grades
(
Grades_ID int primary key not null identity(1,1),
Grades_G1 float,
Grades_G2 float,
Grades_G3 float,
Grades_G4 float,
Grades_G5 float,
Grades_G6 float,
Grades_Students_ID int references Students(Students_ID)
)

Ο πίνακας αυτός έχει γίνει έτσι λόγω του ότι για τους μαθητές του πρώτου έτους έχουμε 5 βαθμούς ενώ για του μαθητές των υπόλοιπων ετών έχουμε 6 βαθμούς.

Θέλω να κάνω μια Stored Procedure που θα μου εμφανίζει τους βαθμούς του κάθε μαθητή. Όμως ο μαθητής αυτός μπορεί να είναι είτε πρώτου έτους είτε δεύτερου έτους.

Λογικά θα είναι κάπως έτσι :

create procedure StudentGrade
@Student_ID int
as
begin
select Grades_ID,Grades_Students_ID,(***)
from Grades
where Grades_Students_ID = @Student_ID
end


***εδώ θέλω να καλώ μία function που θα υπολογίζει τη βαθμολογία του κάθε μαθητή ανάλογα με το έτος του μαθητή. Δηλαδή αν ο μαθητής με id=1 είναι στο πρώτο έτος και έχει 5 βαθμούς(8,7,8,7,8), η stored procedure να καλεί την function και να της δίνει τους 5 βαθμούς και να γυρνάει τον μέσο όρο.

Ευχαριστώ πολύ για τη βοήθεια.

Άβαταρ μέλους
tornado1979
Δημοσιεύσεις: 39
Εγγραφή: 04 Φεβ 2007 15:07
Τοποθεσία: κάπου στα δυτικά

Βοήθεια με Stored Procedure

Δημοσίευση από tornado1979 » 09 Φεβ 2010 00:05

argate7 σου γράφω την store procedure που χρειάζεσαι για τον υπολογισμό του Μ.Ο.
Η storeprocedure, πέρνει μόνο τον κωδικό του μαθητή σαν παράμετρο και μετά ελέγχει σε πιο έτος είναι ο συγκεκριμένος μαθητής. Μετά, ανάλογα το έτος υπολογίζει τον μέσο όρο των μαθημάτων του μαθητή:

create procedure StudentGrade
@Student_ID int
as
begin
declare @Result varchar(10)
select @Result = Students_Year
from Students
where Students_ID = @Student_ID
IF (@Result = 1)
SELECT (Grades_G1 + Grades_G2 + Grades_G3 + Grades_G4 + Grades_G5)/5 AS MESOS_OROS_1ou_etous
FROM Grades
WHERE (Grades_Students_ID = @Student_ID)
ELSE IF (@Result = 2)
SELECT (Grades_G1 + Grades_G2 + Grades_G3 + Grades_G4 + Grades_G5 + Grades_G6)/6 AS MESOS_OROS_2ou_etous
FROM Grades
WHERE (Grades_Students_ID = @Student_ID)
end

:)

Απάντηση

Επιστροφή στο “MS SQL Server”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες