Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 22-02-11, 11:52
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Δημήτρη, εννοώ ότι ο τρόπος που δημιουργείς το ερώτημα «ΒΑΘΜΟΛΟΓΙΑ» δεν είναι σωστός αφού δεν περιλαμβάνει 10 ομάδες (ΑΕΚ,ΑΣΤΕΡΑΣ ΤΡΙΠΟΛΗΣ, ΑΤΡΟΜΗΤΟΣ, ΛΑΡΙΣΑ, ΟΛΥΜΠΙΑΚΟΣ, ΑΙΓΑΛΕΩ, ΑΝΑΓΕΝΝΗΣΗ ΚΑΡΔΙΤΣΑΣ, ΕΘΝΙΚΟΣ, ΠΑΝΣΕΡΡΑΙΚΟΣ) που έχουν αγωνιστεί (περιλαμβάνονται στον πίνακα ΑΠΟΤΕΛΕΣΜΑΤΑ).
Η βάση δεδομένων, που επισυνάπτω, λύνει το παραπάνω πρόβλημα και ταξινομεί πολύ πιο εύκολα τις ομάδες με βάση τη βαθμολογία τους. Περιλαμβάνει:
1) Ένα ερώτημα ένωσης «qryOmades» στο οποίο κάθε γραμμή περιέχει τα στοιχεία μιας μόνο ομάδας, για κάθε αγώνα στον οποίο συμμετείχε. Δηλαδή για κάθε γραμμή του πίνακα «ΑΠΟΤΕΛΕΣΜΑΤΑ» στην οποία υπάρχουν δύο ομάδες δημιουργεί δύο γραμμές (μία για κάθε ομάδα).
Κώδικας:
Select Dior, Home as OMADA,IIf([F]>[A],3,IIf([F]=[A],1,0)) AS  Bathmos, iif([F]>[A],1,0) as W, 
 iif([F]=[A],1,0) as D,iif([F]<[A],1,0) as L from ΑΠΟΤΕΛΕΣΜΑΤΑ
UNION ALL
 Select Dior, Away as OMADA,iif([F]<[A],3,iif([F]=[A],1,0)) as Bathmos,
 iif([F]<[A],1,0) as W,  iif([F]=[A],1,0) as D,iif([F]>[A],1,0) as L  from ΑΠΟΤΕΛΕΣΜΑΤΑ
ORDER BY 1, 2;
2)Το συγκεντρωτικό ερώτημα «qryBathmologia», που βασίζεται στο ερώτημα ένωσης «qryOmades» και δίνει τα συγκεντρωτικά στοιχεία για κάθε ομάδα.
Κώδικας:
SELECT qryOmades.Dior, qryOmades.OMADA, Sum(qryOmades.W) AS Nikes, Sum(qryOmades.D) AS Isopalies, 
Sum(qryOmades.L) AS Httes, Sum(qryOmades.Bathmos) AS Bathmoi
FROM qryOmades
GROUP BY qryOmades.Dior, qryOmades.OMADA
ORDER BY qryOmades.Dior, Sum(qryOmades.W) DESC , Sum(qryOmades.D) DESC;
3) Το ερώτημα «qryKatataxi», που βασίζεται στο ερώτημα «qryBathmologia», που πραγματοποιεί την κατάταξη με βάση τη βαθμολογία.
Κώδικας:
SELECT qryBathmologia.Dior, qryBathmologia.OMADA, qryBathmologia.Nikes, 
qryBathmologia.Isopalies, qryBathmologia.Httes, qryBathmologia.Bathmoi, 
(Select count(*)
 From qryBathmologia as P Where qryBathmologia![Dior]=P![Dior] and
 iif( qryBathmologia![OMADA]=P![OMADA],qryBathmologia![Bathmoi]<=P![Bathmoi],
qryBathmologia![Bathmoi]<P![Bathmoi])) AS Katataxi
FROM qryBathmologia;
Η βαθμολογία στα διάφορα αθλήματα δεν αποτελεί σοβαρό πρόβλημα. Μπορεί να λυθεί προσθέτοντας μια απλή πρόταση Where σε κάθε υποερώτημα στο ερώτημα ένωσης «qryOmades» που θα περιορίζει τις εγγραφές σε κάθε άθλημα (πχ where [Dior]=’ΕΛ3’ , αν ΕΛ3=μπάσκετ) και ορίζοντας κατάλληλα τη βαθμολογία (πχ IIf([F]>[A],3,IIf([F]=[A],2,1)) AS Bathmos).
Αν δεν υιοθετήσεις την παραπάνω πρόταση, η λύση «να εξάγω σε νέο πίνακα την βαθμολογία και μετά να φτιάξω ερώτημα για την ταξινόμηση», πιστεύω ότι δεν είναι καλύτερη, γιατί μπορεί να βελτιώσει λίγο την ταχύτητα θα κάνει όμως πιο πολύπλοκη τη βάση (θα τις προσθέσει ένα πίνακα και ένα ερώτημα που θα διαγράφει τα δεδομένα του πίνακα για να γεμίσει με νέα από ένα ερώτημα προσάρτησης).

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb BathmologiaOmadwn2.mdb (276,0 KB, 68 εμφανίσεις)
Απάντηση με παράθεση