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

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

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

  • 0
mairy87

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

Ερώτηση

Καλησπέρα.

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

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

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

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

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

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

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

Το ΜΟΣ είναι το μοντέλο οντοτήτων συσχετίσεων της βάσης σου. :rolleyes: (σημαντικότατο για να κατανοήσεις μια βάση δεδομένων)

 

ένα παράδειγμα...

mosim7.jpg

 

Δεν κάναμε ΜΟΣ....

Δημιουργήσαμε τους πίνακες(βάλαμε και σχέσεις πινάκων), δημιουργήσαμε και όψεις...

...λυπάμαι...δεν έχω κάποιο τ'ετοιο σχεδιαγραμμα για να ποστάρω...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Με μια γρήγορη ματία μιας και δεν κατέχω την 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);
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Ανέβασε και το ΜΟΣ της άσκησης, οι πίνακες απο μόνοι τους δε βοηθάνε.

 

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

 

Ποίος είναι ο Pinakas1?

 

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

Ευχαριστω πολύ.

 

>
CREATE OR REPLACE FUNCTION mesos_oros(new_studAM IN VARCHAR, new_courseID IN NUMBER) RETURN NUMBER AS mo NUMBER;
//Δηλώνω 2 παραμέτρους εισόδου (new_studAM και new_courseID) και μια επιστρεφόμενη μεταβλητή την mo
BEGIN
SELECT AVG(assignmentGrade.assGrade) INTO mo		//αποθηκεύει στο mo τον μεσο ορο των assGrade για τα οποία ισχύει το WHERE
FROM assignmentGrade, Student, assignment, course
WHERE	assignmentGrade.studAM = new_studAM AND	
	assignmentGrade.assID = assignment.assID AND	//join τον πινακα assignmentGrade με τον assignment
	assignment.courseID = course.courseID AND	//join τον πινακα assignment με τον course
	course.sourseID = new_courseID AND	
	assignmentGrade.studAM = student.studAM;	//join τον πινακα assignmentGrade με τον student
RETURN mo;						//επιστρέφει τον μέσο όρο
END;
/

 

ΥΓ: Καλή επιτυχία georgemarios

ΥΓ: Συνεχίζω να ποστάρω με βάση τις όσες γνώσεις μου στην Oracle και οχι στην MySql προσπαθώντας να σου δώσω μια ιδέα για το πως λύνονται. Αν έχεις ασχοληθεί με το αντικείμενο δεν θα σου είναι δύσκολο να το μετατρέψεις.

ΥΓ: Επίσης κανείς δεν έμαθε προγραμματισμό/βάσεις δεδομένων διαβάζοντας μόνο βιβλία. Γράψε των κώδικα και τρέξτον στον υπολογιστή. Δες τα αποτελέσματα, τι δουλεύει - τι όχι, συντακτικά λάθη που τυχόν θα εμφανιστούν κλπ κλπ.

Κοινοποιήστε αυτήν την ανάρτηση


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

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

 

μαιρη,

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

Γιαυτο, επειδη ειμαι στο φορουμ καποια χρονια και ξερω, αν ενα θεμα φανει ως "θελω ετοιμη την εργασια στο πιατο" θα καταλληξει στα σκουπιδια.

Αντιθετα, αν καποιος δειξει πως το παλευει το θεμα και συγκεκριμενοποιει καπως τις ερωτησεις του, ολο και καποιος που ξερει και εχει το χρονο/διαθεση θα προσπαθησει να τον βοηθησει.

Εγω προσπαθησα να σε βοηθησω οσο μπορω (και θα συνεχισω αν χρειαστει) στη c++ στην οποια εχω καποιες γνωσεις. Αντιθετα, με sql και λοιπα εχω να ασχοληθω χρονια (απο πανεπιστημιο) και αρα δε μου ειναι ευκολο να σε βοηθησω, τουλ οχι χωρις να αφιερωσω χρονο που δυστυχως μου ειναι πλεον ανεπαρκης.

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

.

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

Απλα πρεπει να παρεις αποφαση πως ετσι δουλευουν τα πραγματα.

Ειναι αλλο πραγμα να πεις "αυτο ειναι το ερωτημα, ποια ειναι η απαντηση" και αλλο το να πεις "αυτη τη λυση εχω κανει ως τωρα, ειναι σωστη? Που εκανα λαθος?". Στη μια περιπτωση ο αλλος πρεπει να κατσει να στο απαντησει ενω στη δευτερη ισως να αρκει να κανει καποια διορθωση ή επισημανση. Βλεποντας το εσυ λογικα, σε ποια περιπτωση εχεις περισσοτερες πιθανοτητες να ασχοληθει καποιος μαζι σου? (hint: στη 2η)

 

Αυτα, παω για υπνο, αυριο δινω για διπλωμα μηχανης....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
δεν θα δώσω δημόσιος συνέχεια (εκτός και αν προκληθώ..;)). Ότι θες επ αυτού και μόνο από εδώ και πέρα μέσο pm λοιπόν :-)

 

Δε χρειάζεται να σου στείλω pm ούτε να συνεχιστεί αυτό το θέμα όχι μόνο δημόσια αλλά και σε προσωπικό επίπεδο....γιατί απλούστατα αυτή η διένεξη δεν αφορά εσένα...ότι έχω να πω το ξεκαθάρισα με τον georgemarios με τον οποίο τα βρίκαμε...

Και δεν έχω καμία διάθεση να σε προκαλέσω...ούτε την πρώτη φορά που πήρες θέση είχα...τώρα πως τα κατάφερα (την πρώτη φορά...)και σε προκάλεσα, ειλικρινά δεν το κατάλαβα ούτε το έκανα επίτηδες γιατί απλούστατα δεν γνώριζα ούτε την ύπαρξή σου(εννοώ προσωπικά)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
γιατι να μην τα αναρτησεις εδω?

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

 

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

 

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
πιο πολυ βοηθεια θα παρεις αν βοηθησεις πρωτα εσυ

 

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

 

 

Ξεκινα να κανεις κατι, για να σε βοηθησει καποιος, αλλιως δε σε "βοηθα" αλλα "σου κανει την εργασια"

 

Αν ήθελα έτοιμη τη λύση δεν θα ζήταγα 4 ερωτήματα αλλά και τα 9 που είχε η εργασία...και αυτό εσύ προσωπικά το ξέρεις πάρα πολύ καλά!!!!)

Σωστά??

Και αν είχα τόσο εγάλη αδυναμία που λες στη sql δεν θα είχα φτάσει στο 4ο (τελικό στάδιο), ούτε θα είχα τους μεγαλύτερους βαθμούς του εργαστηρίου μόνη μου...

Αν μπορούσα να περιγράψω τη λύση όπως λες...θα το έλυνα και μόνη μου...αλλά όταν έλλειπα στο συγκεκριμένο εργαστήριο και δεν είχα ακούσει κάποια πράγματα, λογικό είναι να μην μπορώ να τα αναλύσω όλα εις βάθος...Δεν νομίζεις??:rolleyes:

 

Στο κάτω-κάτω αν μπορούσα να την κάνω μόνη μου, δεν θα ζήταγα την βοήθειά σας...Ποιο λόγο θα είχα??Να σας πεδεψω....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Ανέβασε και το ΜΟΣ της άσκησης, οι πίνακες απο μόνοι τους δε βοηθάνε.

 

Τι ακριβώς εννοείς?? Την εκφώνηση?? Ή την περιγραφή των πινάκων?

 

Ποίος είναι ο Pinakas1?

Ο AssignmentGrade.

 

ΥΓ: Συνεχίζω να ποστάρω με βάση τις όσες γνώσεις μου στην Oracle και οχι στην MySql προσπαθώντας να σου δώσω μια ιδέα για το πως λύνονται. Αν έχεις ασχοληθεί με το αντικείμενο δεν θα σου είναι δύσκολο να το μετατρέψεις.

ΥΓ: Επίσης κανείς δεν έμαθε προγραμματισμό/βάσεις δεδομένων διαβάζοντας μόνο βιβλία. Γράψε των κώδικα και τρέξτον στον υπολογιστή. Δες τα αποτελέσματα, τι δουλεύει - τι όχι, συντακτικά λάθη που τυχόν θα εμφανιστούν κλπ κλπ.

 

Το ότι δεν έχω ιδέα από Oracle, παίζει κανα ρόλο?? Ή θα βγάλω άκρη....

Να μην ξεχάσω να σε ευχαριστήσω για το ενδιαφέρον σου και τη βοήθειά σου...:-)

Κοινοποιήστε αυτήν την ανάρτηση


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

 

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

 

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

 

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

Στη σχολή μου πάντος, διδασκόμαστε την 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;
/

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Λοιπόν, ανέβασε τα πινακάκια που δημιούργησα για την βάση μου...

98275588dc1.th.jpg

99988729ep2.th.jpg

Τονίζω πως με ενδιαφέρει σε MySql...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...