Προς το περιεχόμενο

MySql (Διαδικασίες-Συναρτήσεις)


mairy87

Προτεινόμενες αναρτήσεις

Καλησπέρα.

Υλοποιώ μια βάση δεδομένων η οποία αφορά την παρακολούθηση της βαθμολογίας των φοιτητών στα διάφορα μαθήματα ενός εξαμήνου.

Βρίσκομαι στο τελικό στάδιο, όπου υλοποιώ Διαδικασίες και Συναρτήσεις, προκειμένου να την ολοκληρώσω. Και σε αυτό το σημείο, ζητάω την βοήθειά σας...

Θέλω να δημιουργήσω διαδικασίες και συναρτήσεις προκειμένου να:

1)name1:Προσθέτει μια καινούρια εγγραφή στον πίνακα Pinakas1, υποδηλώνοντας ότι ο αντίστοιχος φοιτητής παρέδοσε την άσκηση και βαθμολογήθηκε σε αυτήν.

2)name2:Παίρνει σαν είσοδο τον ΑΜ ενόσ φοιτητή και τον κωδικό ενός μαθήματος και υπολογίζει τον μέσο όρο της βαθμολογίας των ασκήσεων που έχει παραδώσει ο φοιτητής στα πλαίσια του μαθήματος.

3)name3:Παίρναι σαν είσοδο τον ΑΜ ενός φοιτητή και υπολογίζει τον τελικό βαθμό(μέσο όρο) του φοιτητή σε όλα τα μαθήματα τα οποία έχει παρακολουθήσει-δηλώσει.

4)name4:Παίρνει σαν είσοδο τον ΑΜ ενός φοιτητή και επιστρέφει το πλήρες όνομά του μαζί με τον ΑΜ. Για παράδειγμα, για έναν φοιτητή με τα στοιχεία 1234567(studAM), onoma (studFirst), Eponimo (studLast) θα πρέπει να επιστρέφει την τιμή: 1234567-Onoma Eponimo.

 

Όποιος γνωρίζει από αυτά, μπορεί και θέλει, τον παρακαλώ πολύ να με βοηθήσει. Ευχαριστω πολύ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 36
  • Δημ.
  • Τελ. απάντηση

γεια,

 

αφου λες πως εισαι σε τελικο σταδιο, θελω να πιστευω πως εχεις ηδη σχεδιασει τη βαση (εστω στα χαρτια)

παραθεσε εδω το σχημα της (τι πινακες εχει, με τι πεδια) βαζοντας και μερικα σχολια για το τι χρησιμευει ο καθενας, δηλ τι θα αποθηκευει και για ποιο λογο.

 

Μετα

 

θες να κανεις διαδικασιες και συναρτησεις σε τι? Script-ακια με sql? Σε PHP? C++?

 

Ξεκαθαρισε τι θες, σε τι χρειαζεσαι βοηθεια....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γεια και πάλι.

 

Πίνακας Student Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή studAM VARCHAR(10) Primary Key Αρικμόσ Μθτρϊου studFirst VARCHAR(25) Not Null Όνομα studLast VARCHAR(25) Not Null Επϊνυμο studEmail VARCHAR(100) E-mail

Πίνακας Staff Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή staffID INTEGER Primary Key Αναγνωριςτικό προςωπικοφ staffFirst VARCHAR(25) Not Null Όνομα staffLast VARCHAR(25) Not Null Επϊνυμο staffEmail VARCHAR(100) Not Null E-mail

Πίνακας Course Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή courseID INTEGER Primary Key Αναγνωριςτικό μακιματοσ courseTitle VARCHAR(80) Not Null Τίτλοσ μακιματοσstaffID INTEGER Not Null Κωδικόσ κακθγθτι semester UNSIGNED INTEGER Not Null Εξάμθνο courseNotes VARCHAR(200) Διάφορεσ ςθμειϊςεισ.

Πίνακας StudentInCourse Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή courseID INTEGER Primary Key Κωδικόσ μακιματοσ studAM VARCHAR(10) Primary Key ΑΜ φοιτθτι scNotes VARCHAR(200) Διάφορεσ ςθμειϊςεισ

Πίνακας Assignment Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή assID INTEGER Primary Key Αναγνωριςτικό άςκθςθσ courseID INTEGER Not Null Κωδικόσ μακιματοσ assTitle VARCHAR (200) Not Null Τίτλοσ άςκθςθσ assignedOn DATE Ημερομθνία ανάκεςθσ dueDate DATE Προκεςμία παράδοςθσ

Πίνακας Exam Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή examID INTEGER Primary Key Αναγνωριςτικό εξζταςθσ courseID INTEGER Not Null Κωδικόσ μακιματοσ examTitle VARCHAR (100) Τίτλοσ (π.χ. 1θ εξεταςτικι) examDate DATE Not Null Ημερομθνία εξζταςθσ examNotes VARCHAR (200) Διάφορεσ ςθμειϊςεισ

Πίνακας AssignmentGrade Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή assID INTEGER Primary Key Κωδικόσ άςκθςθσ studAM VARCHAR(10) Primary Key ΑΜ φοιτθτι deliveredOn DATE Ημερομθνία παράδοςθσ assGrade UNSIGNED INTEGER Not Null, <=10 Βακμόσ

Πίνακας ExamGrade Πεδίο Τύποσ Δεδομζνων Περιοριςμοί Περιγραφή examID INTEGER Primary Key Κωδικόσ εξζταςθσ studAM VARCHAR(10) Primary Key ΑΜ φοιτθτι exGrade UNSIGNED INTEGER Not Null, <=10 Βακμόσ

 

 

Επειδή δεν νομίζω να βγάζεις και πολύ άκρη έτσι, θες να στα στείλω με ένα mail που φαίνονται αναλυτικότατα???(μαζί με όλα τα υπόλοιπα στοιχεία)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

γιατι να μην τα αναρτησεις εδω?

και καλο θα ειναι να εχεις μια γραφικη αναπαρασταση της βασης ωστε να καταλαβαινει κανεις ευκολα τη δομη της

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

γιατι να μην τα αναρτησεις εδω?

και καλο θα ειναι να εχεις μια γραφικη αναπαρασταση της βασης ωστε να καταλαβαινει κανεις ευκολα τη δομη της

 

Λέγοντας γραφική αναπαράσταση, εννοείς σχήμα?? Πως να το ανεβάσω εδώ?

 

Γιατί, από αυτά που ανάρτησα εδώ, κατάλαβες τίποτα?? Αν ναι, και εγώ μαζί σου...

Την απόπειρα πάντος την έκανα δεν μπορείς να πεις...αλλά δεν βλέπω και μεγάλο ενθουσιασμό από μέρους σου από το αποτέλεσμα...

Κατάλαβες??γι αυτό το λέω...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ναι, εννοω σχημα, μια εικονα που να δειχνει τους πινακες και πως συσχετιζονται. Θελω να πω, πως σχεδιασες τη βαση, τα εγραψες ενα-ενα?

σκοπος ειναι να κανουμε τη δουλεια πιο ευκολη

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ναι, εννοω σχημα, μια εικονα που να δειχνει τους πινακες και πως συσχετιζονται. Θελω να πω, πως σχεδιασες τη βαση, τα εγραψες ενα-ενα?

σκοπος ειναι να κανουμε τη δουλεια πιο ευκολη

 

Ναι. Και το έχω υλοποιήσει και έχω φτιάξει και τα αντίστοιχα πινακάκια...Πως να τα ανεβάσω όμως εδώ σαν εικόνες??

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι. Και το έχω υλοποιήσει και έχω φτιάξει και τα αντίστοιχα πινακάκια...Πως να τα ανεβάσω όμως εδώ σαν εικόνες??

 

Χρησιμοποίησε αυτό και αυτό.

 

Μετά απάντησε και εδώ:

 

θες να κανεις διαδικασιες και συναρτησεις σε τι? Script-ακια με sql? Σε PHP? C++?

 

Ξεκαθαρισε τι θες, σε τι χρειαζεσαι βοηθεια....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με μια γρήγορη ματία μιας και δεν κατέχω την MySQL, σε C++ το 4ο ερώτημα θα ήταν κάπως έτσι:

 

>
struct  /* Structure φοιτητή*/
{
char AM[10];
char FName[25];
char LName[25];
}student_str;

void ShowStudent(char NEW_AM)
{
EXEC SQL SELECT studAM,studFirst,studLast
INTO :student_str
FROM Student
WHERE (studAM=:NEW_AM);

cout << student_str.AM << " " << student_str.FName << " "<< student_str.LName << endl;
}

void main()
{
char AM=1234567;
ShowStudent(AM);
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

γεια,

 

αφου λες πως εισαι σε τελικο σταδιο, θελω να πιστευω πως εχεις ηδη σχεδιασει τη βαση (εστω στα χαρτια)

παραθεσε εδω το σχημα της (τι πινακες εχει, με τι πεδια) βαζοντας και μερικα σχολια για το τι χρησιμευει ο καθενας, δηλ τι θα αποθηκευει και για ποιο λογο.

 

Μετα

 

θες να κανεις διαδικασιες και συναρτησεις σε τι? Script-ακια με sql? Σε PHP? C++?

 

Ξεκαθαρισε τι θες, σε τι χρειαζεσαι βοηθεια....

 

Χρησιμοποίησε αυτό και αυτό.

 

Μετά απάντησε και εδώ:

 

Σε MySql τα θέλω.

Θα κοιτάξω, αν μπορέσω να τα ανεβάσω....

 

 

taspashal, σε ευχαριστώ. Μήπως ξέρει κανείς με τις κατάλληλες αλαγές, να μου το μετατρέψει σε MySql??

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σε MySql τα θέλω.

Θα κοιτάξω, αν μπορέσω να τα ανεβάσω....

 

taspashal, σε ευχαριστώ. Μήπως ξέρει κανείς με τις κατάλληλες αλαγές, να μου το μετατρέψει σε MySql??

 

MySQL δεν ειναι γλωσσα, ειναι ενα συστημα διαχειρισης βασεων δεδομενων (DBMS). Για να κουμανταρεις τη βαση, δινεις εντολες με sql statements

 

απο κει και περα, αυτο το dbms, μπορει να "συνδεθει" με καποιο προγραμμα που εχεις γραψει σε καποια γλωσσα προγραμματισμου (καληωρα c++, java, php) και ετσι αυτο το προγραμμα να εχει προσβαση στη βαση διαβαζοντας/γραφοντας/διαγραφοντας

 

επειδη μυριζομαι πως κατι σου ξεφευγει,

διαβασε καλα την εκφωνηση της ασκησης σου και δες μηπως λεει κατι του στυλ "γραφτε προγραμμα σε php/mysql κτλ κτλ"

Στη χειροτερη, παραθεσε εδω την εκφωνηση ΑΚΡΙΒΩΣ ως εχει για να βγαλουμε ακρη και να σου πουμε τι πρεπει να διαβασεις για να τη διεκπαιρεωσεις

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η λέξη κλειδί που τις διαφεύγει μαλλον είναι αποθηκεμένες διαδικασίες και συναρτήσεις.

Στη σχολή μου πάντος, διδασκόμαστε την ORACLE και γράφουμε αποθηκευμένες διαδικασίες και συναρτήσεις σε PL/SQL. Κάποια αντίστοιχη γλώσσα με μικρές παραλλαγές θα υπάρχει και για την MySQL φαντάζομαι. Το 4ο ζήτημα στη γλώσσα αυτη θα ηταν κάπως έτσι:

 

>

CREATE OR REPLACE PROCEDURE Foititis(NEW_AM IN VARCHAR) IS

CURSOR foititis_cursor IS			//Δημιουργία κέρσορα o οποίος πέρνει τιμή όταν το ΑΜ
	SELECT studAM,studFirst,studLast	//είναι ίδιο με αυτό της παραμέτρου
	FROM Student
	WHERE studAM=NEW_AM;
foititis_rec foititis_cursor%ROWTYPE;		//Ένα record που θα αποθηκεύουμε ότι επιστρέφει ο κέρσορας
						//είναι τύπου ότι και μια εγγραφή στον πίνακα student
BEGIN
OPEN foititis_cursor;
FETCH foititis_cursor INTO foititis_rec;	//Βάζει στοιχεία στον κέρσορα
						//Εδώ η εμφάνιση του αποτελέσματος στο dbms
DBMS_OUTPUT.PUT_LINE(	foititis_rec.studAM ||' '|| 
			foititis_rec.studFirst ||' '|| 
			foititis_rec.studLast);	

CLOSE foititis_cursor;
end;
/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1ον) Δεν κατάφερα να ανεβάσω εικόνες...

2ον) ναι κάτι τέτοιο πάνω κάτω....να σου δώσω ένα παράδειγμα πως έκανα ένα άλλο ερώτημα από αυτά που δεν ανέφερα για να καταλάβεις τι στυλ το θέλω...γιατί κάποια πράγματα που βάζεις εσύ κατά τη δημιουργία εγώ δεν τα γνωρίζω..

Λοιπόν...

>
CREATE PROCEDURE add-student(studAM varchar(10), firstName varchar(25), lastName varchar(25), eMail varchar(100))
BEGIN
    IF ((studAM IS NOT NULL) AND (firstName IS NOT NULL) AND (lastName IS NOT NULL) 
         THEN IF ((studAM<>") AND (firstName <>") AND (lastName<>")) 
               THEN INSERT INTO   TABLE student VALUES (studAM,firstName,lastName,eMail);

    END IF
END IF

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το να ανεβάσεις μια εικόνα είναι απλό. Ανοίγεις το site που σου είπε ένας φίλος σε προηγούμενο ποστ http://www.imageshack.us/

 

imageshackki0.jpg

 

Πατάς στο 1 και βρίσκεις την εικόνα στο pc σου. Πατάς στο 2 και την ανεβάζεις. Περιμένεις ένα εύλογο χρονικό διάστημα ανάλογα με το μέγεθός της βέβαια.

 

uploadja6.jpg

 

κάνεις copy paste αυτή την γραμμή και την ποστάρεις εδώ.

:-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...