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

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


mairy87

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

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

 

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

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

 

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

Μα δεν τα πήρα γι αυτό!!!:shifty:

και ούτε πίστευα πως υπαρχει περίπτωση να βρω αυτό που θέλω εδώ...δεν ήξερα πως λειτουργεί το όλο σύστημα...και όμως οφελήθηκα στη C++. Για τη mysql στο ειχα πει πως δεν πρόκειτα να βρω κάτι από δω μέσα και εσύ το ξέρεις πάρα πολύ καλά, γιατί δίσταζα να ανεβάσω αρχεία και με παρότρυνες εσύ...το θυμάσαι?? Άρα πως λες ότι τα πέρνω επειδή δεν βρίσκω αυτό που θέλω??? Αφού εγώ η ίδια στο είχα αποκλείσει αυτό...το ξερα...λόγο των εξοιδικευμένων γνώσεων που χρειάζονται...ίσως...

 

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

Αν έχεις, θα περιμένω ευχαρίστως να το ακούσω, αλλά από σένα!!!

Τώρα, το τι λένε οι άλλοι....που δεν τους αφορά η μεταξύ μας κόντρα...δεν με απασχολεί!! Τι λες εσύ με νοιάζει...γιατί μην ξεχνάς ότι αναφέρθηκα σε σένα!!!

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

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

 

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

 

Τώρα γιατί μου το κάνεις αυτό??Γατί με γυρνάς πάλι πίσω.... στο λόγο που έγινε όλος αυτός ο χαμός....

(μου αρέσει που κατά τα άλλα λες ότι δεν είπες ότι ζήτησα έτοιμες λύσεις...):lol:

Πες μου ειλικρινά...θες να σου απαντήσω??για τηνακρίβεια να σου το ξανααπαντήσω??? ότι σου χα πει και πριν, θα σου πω και πάλι...και μετά θα ξαναανακατευτεί ο "φίλος μας" και θα ξαναπεί τα ίδια που είπε και πριν...και θα γίνει ένα μπάχαλο...εγώ λέω να το αφήσω εδω...αν έχεις οποιαδήποτε αντήριση πες μου....)

 

Σου εύχομαι ολόψυχα αύριο να ΣΚΙΣΕΙΣ!!!

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

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

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

 

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 προσπαθώντας να σου δώσω μια ιδέα για το πως λύνονται. Αν έχεις ασχοληθεί με το αντικείμενο δεν θα σου είναι δύσκολο να το μετατρέψεις.

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

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

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

 

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

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

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

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

 

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

 

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

Ο AssignmentGrade.

 

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

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

 

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

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

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

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

 

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

mosim7.jpg

 

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

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

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

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

Δεν ξέρω αν βρήκες λύση, αλλα σε περίπτωση που δεν:

1

>
CREATE PROCEDURE hand-assignment(IN p_studAM VARCHAR(10), IN p_assID INTEGER, IN p_assGrade INTEGER)
BEGIN
 DECLARE l_count_students, l_count_assignments INTEGER

 SELECT count(assID) 
 INTO l_count_assignments 
 FROM Assignment 
 WHERE assID = p_assID

 SELECT count(studAM)
 INTO l_count_students
 FROM Student
 WHERE studAM = p_studAM

 IF l_count_students = 1 AND l_count_assignments = 1 THEN
   INSERT INTO AssignmentGrade 
   (assID, studAM, deliveredOn, assGrade) 
   VALUES
   (p_assID, p_studAM, Now(), p_assGrade)
 END IF
END

2

>
CREATE PROCEDURE get-subject-assignment-grade(IN p_studAM VARCHAR(10), IN p_courseID INTEGER, OUT p_mo INTEGER)
BEGIN
 DECLARE l_count_students, l_count_course INTEGER

 SELECT count(studAM)
 INTO l_count_students
 FROM Student
 WHERE studAM = p_studAM

 IF l_count_students = 1 THEN
   SELECT count(courseID)
   INTO l_count_course
   FROM Course
   WHERE courseID = p_courseID

   IF l_count_course = 1 THEN
     SELECT count(studAM)
     INTO l_count_students
     FROM StudentInCourse
     WHERE studAM = p_studAM
     AND courseID = p_courseID

     IF l_count_students = 1 THEN
       SELECT AVG(g.assGrade)
       INTO p_mo
       FROM AssignmentGrade g, Assignment a
       WHERE g.studAM = p_studAM
       AND a.courseID = p_courseID
       AND g.assID = a.assID
     END IF
   END IF
 END IF
END

3

>
CREATE PROCEDURE get-assignment-grade(IN p_studAM VARCHAR(10), OUT p_mo INTEGER)
BEGIN
 DECLARE l_count_students INTEGER

 SELECT count(studAM)
 INTO l_count_students
 FROM Student
 WHERE studAM = p_studAM

 IF l_count_students = 1 THEN
   SELECT AVG(g.assGrade)
   INTO p_mo
   FROM AssignmentGrade g, Assignment a, StudentInCourse c
   WHERE c.studAM = p_studAM
   AND a.courseID = c.courseID
   AND g.assID = a.assID
   AND g.studAM = c.studAM
 END IF
END

4

>
CREATE PROCEDURE retrieve-student(IN p_studAM VARCHAR(10), OUT p_fullname VARCHAR(62))
BEGIN
 DECLARE l_count_students INTEGER

 SELECT count(studAM)
 INTO l_count_students
 FROM Student
 WHERE studAM = p_studAM

 IF l_count_students = 1 THEN
   SELECT studAM + "-" + studFirst + " " + studLast
   INTO p_fullname
   FROM Student
   WHERE studAM = p_studAM
 END IF
END

Αν δεν δουλέψει πες να σε βοηθήσω (εγώ δουλεύω κυρίως σε sybase αλλά οι απαντήσεις ειναι με βάση το syntax εδώ: http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html )

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

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

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


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