Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Ερωτήματα ] Ερώτημα επιλογής από το οποίο αφαιρούνται τ' αποτελέσματα άλλου ερωτήματος (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/4045-erotima-epilogis-apo-opoio-afairointai-t-apotelesmata-alloy-erotimatos.html)

sakis297 08-02-16 23:14

Ερώτημα επιλογής από το οποίο αφαιρούνται τ' αποτελέσματα άλλου ερωτήματος
 
1 Συνημμένο(α)
Γεια σας!
Έχω έναν πίνακα ΔΩΜΑΤΙΑ κι έναν πίνακα ΕΝΟΙΚΙΑΣΕΙΣ_ΔΩΜΑΤΙΩΝ.
Στον πίνακα ΕΝΟΙΚΙΑΣΕΙΣ_ΔΩΜΑΤΙΩΝ.έχω ένα πεδίο ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ το οποίο συμπληρώνεται μόνο όταν τελειώσει η ενοικίαση ενός δωματίου.
Θέλω να φτιάξω ένα ερώτημα που θα μου δίνει τα ελεύθερα δωμάτια.
Δηλαδή θέλω ένα ερώτημα που θα μου δίνει όλα τα δωμάτια από τον πίνακα ΔΩΜΑΤΙΑ εκτός από αυτά του πίνακα ΕΝΟΙΚΙΑΣΕΙΣ_ΔΩΜΑΤΙΩΝ όπου το πεδίο ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ είναι null.
Με τα δεδομένα της βάσης που έχω ανεβάσει, θα πρέπει να παίρνω τα δωμάτια 2, 3, 4 και 5.
Ελπίζω να μπορεί κάποιος να με βοηθήσει ή να μου υποδείξει άλλο τρόπο για να παίρνω τα ελεύθερα δωμάτια.
Ευχαριστώ εκ των προτέρων.

mousatos 09-02-16 07:22

1 Συνημμένο(α)
Σάκη δες μια γρήγορη προσέγγιση

sakis297 09-02-16 23:15

Γιώργη γεια σου!
Ευχαριστώ πολύ για τη βοήθεια. Όμως, στη δική μου βάση δεδομένων στο πεδίο ΗΜΕΡ_ΕΝΟΙΚΙΑΣΗΣ συμπληρώνω την ημερομηνία κατά την οποία ο ένοικος νοίκιασε το δωμάτιο. (Μιλάμε για πολυκατοικία, όχι για ξενοδοχείο). Το πότε θα φύγει από το δωμάτιο δεν το γνωρίζω. Οπότε το πεδίο ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ το συμπληρώνω μόνο όταν ο ένοικος ξενοικιάσει το δωμάτιο. Οπότε για μένα, τα δωμάτια που είναι δεσμευμένα είναι αυτά που έχουν στο πεδίο ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ την τιμή null. Άρα τα ελεύθερα δωμάτιά μου είναι όλα τα δωμάτια εκτός από τα δωμάτια που το πεδίο ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ είναι null.
Πρέπει δηλαδή να κάνω μια πράξη αφαίρεσης από δεδομένα σε ερώτημα επιλογής. Γίνεται κάτι τέτοιο;

mousatos 10-02-16 07:15

Δες αυτό
 
1 Συνημμένο(α)
επισυνάπτω νέα

kapetang 10-02-16 11:08

1 Συνημμένο(α)
Καλημέρα

Μια άλλη πρόταση στο συνημμένο, στο οποίο:

1) Έγιναν αλλαγές στη σχεδίαση της ΒΔ.

2) Ορίστηκαν οι σχέσεις των πινάκων.

3) Προστέθηκε το ερώτημα LastDate, το οποίο, για κάθε διαμέρισμα, βρίσκει την τελευταία ημερομηνία ενοικίασης.

4) Προστέθηκε το ερώτημα QryHLP, το οποίο για τις εγγραφές που επιστρέφει το LastDate, βρίσκει την [ΗΜΕΡΟΜΗΝΙΑ ΤΕΛΟΥΣ].

5) Προστέθηκε το ερώτημα [Διαθέσιμα], που εμφανίζει τα διαθέσιμα διαμερίσματα

Θα πρέπει να προσέξουμε ότι ή σύνδεση του πίνακα [ΔΩΜΑΤΙΑ] με το ερώτημα[qryHLP] είναι Αριστερή (Left Join), ώστε να εξασφαλίζεται η εμφάνιση όλων των διαμερισμάτων (ανεξάρτητα αν υπάρχουν αντίστοιχες εγγραφές στο ερώτημα qryHLP), εφόσον φυσικά πληρούν τα κριτήρια.

Φιλικά/Γιώργος

kapetang 10-02-16 14:35

1 Συνημμένο(α)
Στην παραπάνω λύση, για να φθάσουμε στο ερώτημα [Διαθέσιμα], χρησιμοποιούνται 2 ενδιάμεσα βοηθητικά.

Στο συνημμένο, όλη η εργασία γίνεται με ένα ερώτημα.

sakis297 10-02-16 16:17

Ευχαριστώ πάρα πολύ!!!
Ουσιαστικά αυτό που έψαχνα ήταν το κριτήριο where - not in.

kapetang 10-02-16 19:06

Επειδή, αν οι καταχωρήσεις στον πίνακα [ΕΝΟΙΚΙΑΣΕΙΣ] γίνονται σωστά, μία μόνο εγγραφή για κάθε διαμέρισμα μπορεί να έχει τιμή null,το κριτήριο μπορεί να απλοποιηθεί στο:
Κώδικας:

Not In (SELECT ΕΝΟΙΚΙΑΣΕΙΣ.ΔΩΜΑΤΙΟ
FROM ΕΝΟΙΚΙΑΣΕΙΣ
WHERE ΕΝΟΙΚΙΑΣΕΙΣ.ΗΜΕΡΟΜΗΝΙΑ_ΤΕΛΟΥΣ Is Null)



Η ώρα είναι 11:00.

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


Search Engine Optimization by vBSEO 3.3.2