a-l-e-x
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 39
Θετικοί ψήφοι: +9
Αποσυνδεδεμένος
|
03 Φεβρουαρίου 2011, 22:56
|
+1
|
ΣΥΝΑΛΛΑΓΗ: ΚΣ,ΗΜΝΙΑ,ΩΡΑ,ΚΜ,ΤΙΜΗ ΜΕΤΟΧΗ: ΚΜ,ΟΝΟΜΑ,ΕΤΟΣ_ΙΔΡΥΣΗΣ,ΚΚ ΚΑΤΗΓΟΡΙΑ: ΚΚ,ΚΑΤΗΓΟΡΙΑ ΣΤΑΤΙΣΤΙΚΗ: ΚΜ,ΗΜΕΡΟΜΗΝΙΑ,ΜΙΝ_ΤΙΜΗ,ΜΑΧ_ΤΙΜΗ,ΜΕΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ Δημιουργήστε μια σκανδαλη πάνω στον πίνακα ΣΥΝΑΛΛΑΓΗ ωστε κάθε φορά που γίνετε εισαγωγή νέας εγγραφής να ελεγχει, να βρίσκει και να καταχωρει στον πίνακα ΣΤΑΤΙΣΤΙΚΗ την μικρότερη και την μεγαλυτερη τιμή της μετοχής μεχρι την ώρα που έγινε η συναλλαγή, και να υπολογίζει την ΜΕΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ, τα οποία θα υπολογίζονται για την ημερα κ την ωρα που γινεται η συναλλαγη.Την πρωτη φορά κάθε μέρα θα γίνεται εισαγωγή νέας εγγραφής στον πίνακα ΣΤΑΤΙΣΤΙΚΗ σε κάθε νέα συναλλαγή όμως της μετοχής θα γίνεται ενημέρωση των στοιχείων του πίνακα για την καθε μετοχη που αλλαξε τιμες. μπορει καποιος να το λύσει αυτο το Trigger? προσπαθω να καταλαβω τα trigger εδω κ πολλη ωρα αλλα δεν μπορω με τπτ να το λυσω!! ευχαριστώ!!!!!!!
|
|
|
Καταγράφηκε
|
|
|
|
|
nabz0r
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 624
Θετικοί ψήφοι: +75
Αποσυνδεδεμένος
(•‿•)
|
Έλεος ρε τέτοια θέματα μπαίνουν; Καλό αγγούρι θα φάμε μου φαίνεται... Τέσπα έβγαλα μια "λύση" αλλά μάλλον έχει λάθη και είναι αρκετά μπακάλικη...
CREATE TRIGGER UPDATE_STATISTIKH ON ΣΥΝΑΛΛΑΓΗ AFTER INSERT,UPDATE AS /* Δήλωση μεταβλητών για μεταφορά τιμών απο έναν πίνακα σε άλλον */ /* Δεν ξέρω αν γίνεται με άλλον(καλύτερο) τρόπο γιατί δεν ξέρω απο SQL */ /* Τους τύπους δεδομένων τους πήρα αυθαίρετα */ @vHMNIA date @vKM int @vMIN int @vMAX int @vMESH real
/* Δίνονται τιμές στις μεταβλητές χρησιμοποιώντας τον πίνακα inserted */ @vHMNIA=(SELECT HMNIA FROM INSERTED) @vKM=(SELECT KM FROM INSERTED)
/* Βρίσκονται τα min,max,avg για την συγκεκριμένη ημέρα */ @vMIN=(SELECT MIN(ΣΥΝΑΛΛΑΓΗ.TIMH) FROM INSERTED,ΣΥΝΑΛΛΑΓΗ WHERE INSERTED.ΚΣ=ΣΥΝΑΛΛΑΓΗ.ΚΣ AND @vDATE=INSERTED.HMNIA) @vMAX=(SELCCT MAX(ΣΥΝΑΛΛΑΓΗ.TIMH) FROM INSERTED,ΣΥΝΑΛΛΑΓΗ WHERE INSERTED.ΚΣ=ΣΥΝΑΛΛΑΓΗ.ΚΣ AND @vDATE=INSERTED.HMNIA) @vMESH=(SELECT AVG(ΣΥΝΑΛΛΑΓΗ.TIMH) FROM INSERTED,ΣΥΝΑΛΛΑΓΗ WHERE INSERTED.ΚΣ=ΣΥΝΑΛΛΑΓΗ.ΚΣ AND @vDATE=INSERTED.HMNIA)
IF (GETDATE()>@vHMNIA) /*Γίνεται έλεγχος αν άλλαξε η μέρα */ INSERT INTO ΣΥΝΑΛΛΑΓΗ /*Αν άλλαξε, τότε μπαίνει νέα εγγραφή για την τελεφταία συναλλαγή */ VALUES(@vKM,@vHMNIA,@vMIN,@vMAX,@vMESH) ELSE UPDATE ΣΥΝΑΛΛΑΓΗ /* Αλλιώς γίνεται ενημέρωση της υπάρχουσας εγγραφής */ SET MIN_TIMH=@vMIN,MAX_TIMH=@vMAX,MEΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ=@vMESH WHERE HMNIA=@vHMNIA AND KM=@vKM END IF;
Αν βρείτε κάποιο λάθος, πείτε το. Μην ντρέπεστε! Δεν θα μου πληγώσετε τα αισθήματα :Ρ
|
|
|
Καταγράφηκε
|
♫ You're older than you've ever been, and now you're even older ...and now you're even older...and now you're even older... ♪
|
|
|
4eMenS
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 130
Θετικοί ψήφοι: +9
Αποσυνδεδεμένος
|
Εχει τις λυσεις απο τα θεματα ο τσιμπητης στην σελιδα του
CREATE TRIGGER Τ1 ON [dbo].[ΣΥΝΑΛΛΑΓΗ] FOR INSERT AS BEGIN DECLARE @MIN FLOAT, @MAX FLOAT, @MO FLOAT,@KM INT, @HMNIA VARCHAR(10), @KMS INT SELECT @KM=(SELECT ΚΜ FROM INSERTED) SELECT @HMNIA=(SELECT ΗΜΝΙΑ FROM INSERTED) SELECT @MAX=(SELECT MAX(ΤΙΜΗ) FROM ΣΥΝΑΛΛΑΓΗ WHERE ΚΜ=@KM AND ΗΜΝΙΑ=@HMNIA) SELECT @MIN=(SELECT MIN(ΤΙΜΗ) FROM ΣΥΝΑΛΛΑΓΗ WHERE ΚΜ=@KM AND ΗΜΝΙΑ=@HMNIA) SELECT @MO=(SELECT AVG(ΤΙΜΗ) FROM ΣΥΝΑΛΛΑΓΗ WHERE ΚΜ=@KM AND ΗΜΝΙΑ=@HMNIA) SELECT @KMS=(SELECT ΚΜ FROM ΣΤΑΤΙΣΤΙΚΗ WHERE ΚΜ=@KM AND ΗΜΕΡΟΜΗΝΙΑ=@HMNIA) IF @KMS IS NULL INSERT ΣΤΑΤΙΣΤΙΚΗ(ΚΜ, ΗΜΕΡΟΜΗΝΙΑ, ΜΙΝ_ΤΙΜΗ, ΜΑΧ_ΤΙΜΗ, ΜΕΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ) VALUES (@KM, @HMNIA, @MIN, @MAX, @MO) ELSE UPDATE ΣΤΑΤΙΣΤΙΚΗ SET ΜΙΝ_ΤΙΜΗ=@MIN, ΜΑΧ_ΤΙΜΗ=@MAX, ΜΕΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ=@MO WHERE ΚΜ=@KM AND ΗΜΕΡΟΜΗΝΙΑ=@HMNIA END
|
|
|
Καταγράφηκε
|
|
|
|
nabz0r
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 624
Θετικοί ψήφοι: +75
Αποσυνδεδεμένος
(•‿•)
|
καλά ρε 4eMenS, τόση ώρα παιδευόμουν, και μου λες οτι υπάρχουν; ಠ_ಠ
Και απ'οτι βλέπω έχω αρκετά λαθάκια. Καλά ρε τι παλούκια θέματα είναι αυτά :/
|
|
|
Καταγράφηκε
|
♫ You're older than you've ever been, and now you're even older ...and now you're even older...and now you're even older... ♪
|
|
|
ScullShot
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 504
Θετικοί ψήφοι: +74
Αποσυνδεδεμένος
The Economy Picker!
|
δεν είδα να υπάρχουν κάπου στη σελίδα του τα θέματα του 2010
|
|
|
Καταγράφηκε
|
|
|
|
Xaeron
Μηχανικών Πληροφορικής ΤΕ
Πληροφορικής & Επικοινωνιών
Μηνύματα: 3205
Θετικοί ψήφοι: +40
Αποσυνδεδεμένος
If you smell...what Xaeron...is cooking...
|
Εχει τις λυσεις απο τα θεματα ο τσιμπητης στην σελιδα του
Σε ποιο σημείο και δεν τις βλέπω;
|
|
|
Καταγράφηκε
|
|
|
|
4eMenS
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 130
Θετικοί ψήφοι: +9
Αποσυνδεδεμένος
|
|
|
|
Καταγράφηκε
|
|
|
|
Xaeron
Μηχανικών Πληροφορικής ΤΕ
Πληροφορικής & Επικοινωνιών
Μηνύματα: 3205
Θετικοί ψήφοι: +40
Αποσυνδεδεμένος
If you smell...what Xaeron...is cooking...
|
Σ' ευχαριστώ, δεν την ήξερα αυτή τη σελίδα!
|
|
|
Καταγράφηκε
|
|
|
|
sissi
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 136
Θετικοί ψήφοι: +44
Αποσυνδεδεμένος
|
Θέμα 1ο Σε μία βάση δεδομένων χρηματιστηριακών συναλλαγών υπάρχουν οι παρακάτω πίνακες που αποτελούνται από τα εξής πεδία : ΣΥΝΑΛΛΑΓΗ : ΚΣ , ΗΜΝΙΑ , ΩΡΑ, ΚΜ, ΤΙΜΗ ΜΕΤΟΧΗ : ΚΜ , ΟΝΟΜΑ , ΕΤΟΣ_ΙΔΡΥΣΗΣ, ΚΚ, ΚΑΤΗΓΟΡΙΑ : ΚΚ , ΚΑΤΗΓΟΡΙΑ ΣΤΑΤΙΣΤΙΚΗ : ΚΜ, ΗΜΕΡΟΜΗΝΙΑ, MIN_TIMH, MAX_TIMH, ΜΕΣΗ_ΤΙΜΗ_ΗΜΕΡΑΣ Α. Εάν γνωρίζατε ότι κρατάμε στοιχεία για 3 μετοχές τότε δημιουργήστε ερώτημα SQL που να προβάλει ένα πίνακα με την ΗΜΕΡΟΜΗΝΙΑ , ΩΡΑ και τις τιμές της κάθε μετοχής την μία δίπλα στην άλλη, ταξινομημένα κατά ημερομηνία σε φθίνουσα σειρά και ώρα σε αύξουσα σειρά. Να γίνει χρήση όψεων και στην τελευταία όψη να χρησιμοποιηθεί η εντολή LEFT JOIN. λύση Θέμα 1ο A CREATE VIEW FIN1 AS SELECT ΗΜΝΙΑ, ΩΡΑ, ΚΜ, ΤΙΜΗ FROM ΣΥΝΑΛΛΑΓΗ WHERE (ΚΜ = 1) CREATE VIEW FIN2 AS SELECT ΗΜΝΙΑ, ΩΡΑ, ΚΜ, ΤΙΜΗ FROM ΣΥΝΑΛΛΑΓΗ WHERE (ΚΜ = 2) CREATE VIEW FIN3 AS SELECT ΗΜΝΙΑ, ΩΡΑ, ΚΜ, ΤΙΜΗ FROM ΣΥΝΑΛΛΑΓΗ WHERE (ΚΜ = 3) SELECT ΣΥΝΑΛΛΑΓΗ.ΗΜΝΙΑ, ΣΥΝΑΛΛΑΓΗ.ΩΡΑ, FIN1.ΤΙΜΗ AS MET1, FIN2.ΤΙΜΗ AS MET2, FIN3.ΤΙΜΗ AS MET3 FROM ΣΥΝΑΛΛΑΓΗ LEFT OUTER JOIN FIN2 ΟΝ ΣΥΝΑΛΛΑΓΗ.ΗΜΝΙΑ = FΙΝ2.ΗΜΝΙΑ ΑΝD ΣΥΝΑΛΛΑΓΗ.ΩΡΑ = FΙΝ2.ΩΡΑ LEFT OUTER JOIN FIN3 ON ΣΥΝΑΛΛΑΓΗ.ΗΜΝΙΑ = FIN3.ΗΜΝΙΑ AND ΣΥΝΑΛΛΑΓΗ.ΩΡΑ = FIN3.ΩΡΑ LEFT OUTER JOIN FIN1 ON ΣΥΝΑΛΛΑΓΗ.ΗΜΝΙΑ = FIN1.ΗΜΝΙΑ AND FIN1.ΩΡΑ = ΣΥΝΑΛΛΑΓΗ.ΩΡΑ ORDER BY ΣΥΝΑΛΛΑΓΗ.ΗΜΝΙΑ DESC, ΣΥΝΑΛΛΑΓΗ.ΩΡΑ Βασικά έχω κάποιες απορίες Μας λέει ότι στην τελευταία όψη πρέπει να χρησιμοποιήσουμε LEFT JOIN Ωραία… αλλά αυτός που χρησιμοποιεί το LEFT JOIN;;; Σε ένα SELECT.Τι παίζει;;;; μπορεί κάποιος να μου το εξηγήσει;; Επίσης 2η απορία!! Γιατί παίρνει την ημερομηνία και την ώρα από τον πίνακα Συναλλαγή και όχι από τα views που έχει δημιουργήσει πιο πάνω;;; ευχαριστώώωώώώώώώώ...
|
|
Τελευταία τροποποίηση: 04 Φεβρουαρίου 2011, 15:08 από The_Freedom_Man
|
Καταγράφηκε
|
are you WORKING me?
|
|
|
xriseyri
Μηχανικών Πληροφορικής ΤΕ
Μηνύματα: 126
Θετικοί ψήφοι: +31
Αποσυνδεδεμένος
|
Μήπως υπάρχει αναλυτικό υλικό για την trigger; Έχω ψάξει αλλά δεν βρίσκω πουθενά
|
|
Τελευταία τροποποίηση: 04 Φεβρουαρίου 2011, 15:33 από xriseyri
|
Καταγράφηκε
|
|
|
|
|