PDA

Επιστροφή στο Forum : c++Builder SQL Query



santono
10-03-09, 11:42
Χαιρετώ τους πάντες!

Αναλύοντας το πρόβλημά μου έχω:

Τρεις πίνακες με την εξής δομή (παρουσιάζοντα συνοπτικά)

Σχολείο
ID
Όνομα

Μαθητές
ID
Όνομα
Σχολείο_ID

Απουσίες
ID
Μήνας
Μαθητές_ID

Ο πίνακας Σχολείο είναι Master για τον πίνακα Μαθητές ο οποίος είναι Master για τον πίνακα Απουσίες.
Επίσης ο πίνακας Σχολείο έχει πολλές εγγραφές του στυλ Σχολείο 1, Σχολείο 2 κ.λ.π.

Αυτό που θέλω είναι ένα query το οποίο θα μου φέρνει τα Σχολεία για τια οποία υπάρχουν μαθητές που έχουν απουσίες.

Δηλαδή
Αν μια υλοποίηση είναι η παρακάτω

Σχολείο
1 Σχολείο1
2 Σχολείο2
3 Σχολειο3

Μαθητές
1 Μαθητής1 1
2 Μαθητής2 2
3 Μαθητής3 3

Απουσίες
1 Ιανουάριος 2
2 Φεβρουάριος 1
3 Φεβρουάριος 3


τότε να ρωτάω για τον μήνα Φεβρουάριο και να παίρνω απάντηση:

Σχολείο 1
Σχολείο 3

δηλαδή τα σχολεία τα οποία κάποιοι μαθητές είχαν απουσία τον Φεβρουάριο..

Έχω δοκιμάσει και Nested queries kai Join αλλά δεν έχω καταφέρει κάτι.

Κάθε βοήθεια καλοδεχούμενη!

boeotian
10-03-09, 12:02
Αυτό που ζητάς γίνεται με ένα απλό join:


SELECT sx.ID
FROM Σχολείο sx, Μαθητές ma, Απουσίες ap
WHERE sx.ID=ma.Σχολείο_ID and ma.ID=ap.Μαθητές_ID and ap.Μήνας='Φεβρουάριος';

Μπορείς να βάλεις και κανένα unique ή outer/inner joins, γιατί θα σου επιστρέψει περισσότερες εγγραφές.

santono
10-03-09, 12:41
Το έχω κάνει έτσι αλλά μου επιστρέφει
Σχολείο 1, Σχολείο 2, Σχολείο 3 και όχι

Σχολείο 1, Σχολείο 3. Το έκανα και με σκέτο Join αλλά πάλι τα ίδια.

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

........Auto merged post: santono πρόσθεσε 13 λεπτά και 35 δευτερόλεπτα αργότερα ........

Συγνώμη έχεις 100% δίκο. Τόση ώρα είχα συνδέσει το datasource με τον πίνακα και όχι το query με αποτέλεσμα να μου επιστρέφει όλες τις εγγραφές του πινακά..

Τελικά είναι σωστό,
Ευχαριστώ

@ ADSLgr.com All rights reserved.