Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   SQL SUM & MAX (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5548-sql-sum-max.html)

parara 29-05-20 11:08

Ονόματα πινάκων
 
Στην πραγματικότητα δεν είναι αυτά τα ονόματα των πεδίων.
Τα αναφέρω μόνο στο παράδειγμα
Ωστόσο έχεις δίκιο και οι κανόνες πρέπει να ακολουθούνται παντού.

Στο ίδιο ερώτημα αν κοιτάξεις πιο πάνω ζητώ να κάνω κάτι επιπλέον.

Αν μπορείς να βοηθήσεις;

Tasos 29-05-20 13:37

Ο κώδικας SQL κάνει ακριβώς αυτό που ζήτησες δηλαδή σου επιστρέφει το όνομα (στο μήνυμα σου name)" που έχει το μεγαλύτερο αθροιστικά salary".
Αν θέλεις κάτι άλλο περίγραψε μας το ζητούμενο ξανά.

parara 29-05-20 13:51

Νέο ζητούμενο
 
id Αname salaryt Bname_id B_name

2 Dionisis 22000 01 Papado
3 Vasilis 27000 02 Anastaso
2 Dionisis 19000 03 Georgiou
1 Kostas 11000 04 Didaska
3 Vasilis 17000 05 Raptis


Τώρα πρόσθεσα ακόμη δύο στήλες στον πίνακα salary την στήλη B_name_id και την B_name και προσπαθώ για το όνομα της πρώτης στήλης name που έχει το μεγαλύτερο αθροιστικά salary , να μου επιστρέφει και τα ονόματα

δηλαδή από τα παραπάνω να έχω

2 Dionisis 41000 Papado Raptis

όσες δοκιμές έχω κάνει πάντα μου επιστρέφει
2 Dionisis 41000 Papado

δηλαδή μόνο το ένα όνομα

Tasos 29-05-20 14:23

Dionisis 41000 Papado Raptis

Δεν μπόρεσα να καταλάβω.

Το Raptis μετά το Papado που κολλάει;;;; Πρόκειται για δεύτερη γραμμή μήπως;;

Γίνε πιο σαφής σε παρακαλώ.

parara 29-05-20 14:37

Ναι ....

O Dionisis έχει το μεγαλύτερο αθροιστικά salary (που απαντήθηκε ήδη σωστά)
Αυτό το salary προέρχεται από τους papado και raptis και αυτούς θέλω να εμφανίζω είτε σε μία σειρά είτε από κάτω

Dionisis 41000 Papado Raptis

ή

Dionisis
41000
Papado
Raptis

Tasos 29-05-20 15:52

1 Συνημμένο(α)
Σε ένα ερώτημα με το όνομα TopName Βάλε το παρακάτω:

Κώδικας:

SELECT TOP 1 Table1.Αname, Sum(Table1.Salary) AS SumOfSalary
FROM Table1
GROUP BY Table1.Αname
ORDER BY Sum(Table1.Salary) DESC
UNION SELECT Table1.B_name, Sum(Table1.Salary) AS SumOfSalary
FROM TopName INNER JOIN Table1 ON TopName.Αname = Table1.Αname
GROUP BY Table1.B_name;

Προσοχή!! Το A στο όνομα Αname του μηνύματος σου είναι ελληνικό. Στον κώδικα είναι λατινικό για να μην μας μπερδεύει ακόμα περισσότερο.

Κατόπιν σε ένα νέο ερώτημα βάλε το παρακάτω:

Κώδικας:

SELECT TOP 1 Table1.Αname, Sum(Table1.Salary) AS SumOfSalary
FROM Table1
GROUP BY Table1.Αname
ORDER BY Sum(Table1.Salary) DESC
UNION SELECT Table1.B_name, Sum(Table1.Salary) AS SumOfSalary
FROM TopName INNER JOIN Table1 ON TopName.Αname = Table1.Αname
GROUP BY Table1.B_name;

Δες στο επισυναπτόμενο παράδειγμα μια απλουστευμένη λύση.

Τάσος

parara 29-05-20 23:44

ΣΟΥΠΕΡ
 
Ναι όντως δουλεύει (αν και μου έστειλες 2 φορές τον ίδιο κώδικα)

Αυτό λέγεται ερώτημα συνένωσης;


Ευχαριστώ για τον κόπο σου και την υπομονή σου;
Αλήθεια ασχολείσαι επαγγελματικά ή ερασιτεχνικά;

Tasos 30-05-20 10:11

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

Το δεύτερο τμήμα είναι κάτι ξεχωριστό και περιέχει διαφορετικά ονόματα.

Δραστηριοποιούμαι επαγγελματικά σ αυτόν τον τομέα στο εξωτερικό από το 2000.


Η ώρα είναι 22:21.

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


Search Engine Optimization by vBSEO 3.3.2