Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Σύνθεση 2 πεδίων και κατανομή θέσεων (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5060-sinthesi-2-pedion-kai-katanomi-theseon.html)

smasak 17-11-18 20:10

Νάσο δεν δουλεύει σωστά...η κάτι δεν κάνω εγώ σωστά.

smasak 18-11-18 12:38

Προσπάθησα να δημιουργήσω έκφραση στο ερώτημα με την εντολή SEL1:(select *
from SIGNUP
order by SCORE1
limit 3;) αλλά μου βγάζει λάθος σύνταξη.
Ποιά είναι η σωστή;

smasak 22-11-18 19:09

Καλησπέρα, σε περίπτωση που διαλέγοντας με την SELECT TOP 3 εντολή τα πρώτα 3 καλύτερα σκορ έχουμε π.χ. στην 3 θέση ισοβαθμία, με ποια εντολή απορρίπτουμε την 4 στην ουσία θέση;
π.χ. 45
40
35
35 αυτή να μην υπολογισθεί...

kapetang 23-11-18 19:03

Καλησπέρα

Σάκη, αν ο πίνακας που περιέχει τα Scores έχει και ένα πεδίο με μοναδικές τιμές, το ζητούμενο θα μπορούσε να υλοποιηθεί εύκολα.

Για παράδειγμα, στην περίπτωση που ο πίνακας λέγεται Table1, και τα πεδία με τα Scores και τις μοναδικές τιμές Score και ID, θα μπορούσαμε να χρησιμοποιήσουμε το ερώτημα.
Κώδικας:

SELECT TOP 3 Table1.[Score]
FROM Table1
ORDER BY [Score] DESC , ID;

Όπως βλέπεις στην ταξινόμηση συμμετέχει και το πεδίο με τις μοναδικές τιμές.

smasak 23-11-18 21:00

Γιώργο καλησπέρα, έχω προχωρήσει αρκετά τη βάση, χρησιμοποιώ την εντολή

"SELECT t.ID_RACE, t.RACE, t.ID_CONT, t.NAMES, t.GR_NAT, t.NATION, t.CATEGORY, t.SCORE1
FROM DAY1_SCORE_PCP AS t
WHERE (((t.SCORE1) In (SELECT TOP 4 SCORE1
FROM DAY1_SCORE_PCP
WHERE
ID_RACE=t.ID_RACE and
NATION=t.NATION
ORDER BY SCORE1 DESC
)))
ORDER BY t.SCORE1 DESC;

για να αντλήσω τα 4 μεγαλύτερα σκορ.
Πως μπορώ να συνδυάσω την εντολή LIMIT ή ROWNUM για να μην μου φέρνει το 5ο σκορ το οποίο είναι το ίδιο με το 4ο;

smasak 23-11-18 21:55

Ψάχνωντας λίγο είδα ότι η LIMIT δεν μπορεί να συνδυαστεί με την TOP.
Η εντολή FETCH προφανώς είναι πιο κατάλληλη.....το θέμα είναι πως θα την συντάξω στην περίπτωσή μου.....

smasak 24-11-18 12:00

Γιώργο δοκίμασα την πρότασή σου αλλά δεν δουλεύει.Στην εντολή

"SELECT t.ID_RACE, t.RACE, t.ID_CONT, t.NAMES, t.GR_NAT, t.NATION, t.CATEGORY, t.SCORE1
FROM DAY1_SCORE_PCP AS t
WHERE (((t.SCORE1) In (SELECT TOP 3 SCORE1
FROM DAY1_SCORE_PCP
WHERE
ID_RACE=t.ID_RACE and
NATION=t.NATION
ORDER BY SCORE1 DESC, ID_CONT;
)))

πρόσθεσα την ID_CONT που είναι μοναδική(το ID του αθλητή) αλλά έχω περίπτωση με 4πλη ισοβαθμία πχ 35,35,35,35 και φέρνει αποτέλεσμα 140 και όχι 105 που εγώ θέλω..

kapetang 24-11-18 12:54

Καλησπέρα

1)
Σάκη η πρότασή μου αφορούσε απλό ερώτημα και όχι σύνθετο.

Στη συγκεκριμένη περίπτωση, το εσωτερικό ερώτημα (απλό) επιστρέφει το σύνολο των 3 στοιχείων{35, 35, 35}.

Κάθε μία από τις 4 ισοβαθμίες (35, 35, 35, 35) στο κύριο ερώτημα ανήκει στο παραπάνω σύνολο (ικανοποιεί το κριτήριο IN) και συνεπώς επιστρέφεται.

Με άλλα λόγια επιστρέφονται 4 εγγραφές και σωστά το άθροισμα είναι 140 και όχι 105.

Ίσως (δεν μπορώ να το δοκιμάσω) αν έβαζες στο εξωτερικό Select το TOP 3 και πρόσθετες και την πρόταση ταξινόμησης ORDER BY t.SCORE1 DESC, t.ID_CONT, να είχες σωστό αποτέλεσμα.

2)
Από τις εκφράσεις TOP, LIMIT, ROWNUM, FETCH και OFFSET, που χρησιμοποιούνται στην SQL για τον περιορισμό των εγγραφών που επιστρέφονται από ένα ερώτημα, αν δεν κάνω λάθος, η Access υποστηρίζει μόνο την TOP.

smasak 24-11-18 17:37

Γιώργο πως θα μπορώ να συντάξω το εξωτερικό SELECT TOP 3 αναφέρεις;

kapetang 24-11-18 19:25

Σάκη, δοκίμασε μήπως δουλέψει:

Κώδικας:

SELECT TOP 3 t.ID_RACE, t.RACE, t.ID_CONT, t.NAMES, t.GR_NAT, t.NATION, t.CATEGORY, t.SCORE1
FROM DAY1_SCORE_PCP AS t
WHERE (((t.SCORE1) In (SELECT TOP 3 SCORE1
FROM DAY1_SCORE_PCP
WHERE
ID_RACE=t.ID_RACE and
NATION=t.NATION
ORDER BY SCORE1 DESC, ID_CONT
)))
ORDER BY t.SCORE1 DESC, t.ID_CONT



Η ώρα είναι 10:59.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2