Συγκριση εγγραφών σε δύο πίνακες

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από majuranus » 23 Νοέμ 2008 11:58

Και πάλι με ένα "ωράιο" πρόβλημα...

Έχω ένα πίνακα paraggelies και ένα πίνακα paradoseis οι οποίοι έχουν κάποια πεδία ίδια

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

Φαντάζομαι με ένα query θα γίνεται και το μυαλό μου πήγε στο ερώτημα διασταύρωσης αλλά δεν είμαι σίγουρος

:question:

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από cherouvim » 23 Νοέμ 2008 18:28

Δεν έπρεπε να έχεις 1 πίνακα με τις παραγγελίες ο οποίος θα έχει και ένα status field με πιθανές τιμές draft, pending, dispatched, completed, archived, canceled;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από dva_dev » 23 Νοέμ 2008 23:59

Αν στον paraggelies έχεις ένα πεδίο ID για primary key, και στον paradoseis έχεις ένα πεδίο orderid (foreign key προς τον paraggelies ώστε να γίνεται η σύνδεση των δύο πινάκων) μπορείς να φτιάξεις κάτι τέτοιο:

Κώδικας: Επιλογή όλων

select paraggelies.*
from paraggelies left join paradoseis on paraggelies.id=paradoseis.orderid
where (paradoseis.orderid is null)
Η όλη ιστορία είναι αντί για [inner] join να χρησιμοποιήσεις left [outer] join, από τον paraggelies προς τον paradoseis.

Πάντως σκέψου μήπως αλλάζοντας τη λογική που λειτουργεί η access σου μπορείς να χρησιμοποιήσεις την πρόταση του cherouvim. Αν μπορείς θα απλοποιήσει αρκετά τα πράγματα.

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από majuranus » 24 Νοέμ 2008 00:56

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

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από kon73 » 24 Νοέμ 2008 15:08

Καλησπέρα,

Να εκφρασώ κι εγώ την άποψη μου η οποία συγκλίνει με του cherouvim με μία όμως παραλλαγή.

Έχεις τον πίνακα παραγγελίες και τον πίνακα παραδόσεις. Ο πίνακας παραδόσεις λογικά θα μπορούσε να εμπεριέχει πεδία επιπρόσθετα από τον παραγγελίες όπως Τόπος Παράδοσης, Ημερομηνία Παράδοσης (Που φυσικά είναι διαφορετική από την ημερομηνία παραγγελίας), Ονοματεπώνυμο παραλαβώντος κλπ.
Όλες αυτές οι πληροφορίες και ίσως και μερικές ακόμες θα μπορούσαν να είναι επιπλέον πεδία για τον πίνακά σου παραγγελίες και να ισχύει το Status των Pending κλπ που αναφέρει ο cherouvim
Όμως αν δεν έχουμε dispatch status αυτά τα επιπλεόν πεδία παραμένουν κενά επομένως η λογική των 2 διαφορετικών πινάκων φαίνεται πιο σωστή αλλά διατηρώντας στον πίνακα παραγγελίες το status.
Εν ολίγης συμφωνώ εν μέρη με τον cherouvim καθότι η ύπαρξη 2 πινάκων ίσως και να είναι απαραίτητη για να έχουμε στον πίνακα αποστολές τις επιπρόσθετες πληροφορίες που χρειάζεται.


Επίσης η εύρεση αταίριαστων είναι ένας οδηγός της Access για τα ερωτήματα (Δημιουργία-Οδηγός εύρεσης αταίριαστων) ο οποίος βρίσκει τα αταίριαστα μεταξύ δύο πινάκων μία λύση σύντομη εκτός από την προτεινόμενη από τον DVA_DEV την οποία βέβαια λύση νομίζω ότι είναι η καλύτερη (Δεν προτείνω συνήθως οδηγούς, αλλά καλή επιλογή για χρήση σε όσους δεν κατέχουν καλά την SQL.)

Φιλικά

kon73
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από majuranus » 24 Νοέμ 2008 18:14

Για άλλη μια φορά μου απαντήσατε με τρόπο κατανοητό και απλό μιας και δεν είμαι expert στην Access Ευχαριστώ πολύ

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Συγκριση εγγραφών σε δύο πίνακες

Δημοσίευση από majuranus » 26 Νοέμ 2008 21:25

Το παλεύω με τον οδηγό

Στην πραγματικότητα έχω 2 πίνακες, τον kiniseis που έχει kdparaggelias και τον paradoseis που επίσης έχει kdparaggelias κανένα από τα δύο δεν είναι πρωτέυοντα κλειδιά (δεν ξέρω αν παίζει ρόλο αυτό) αλλά οι τιμές τους μπαίνουν με κώδικα και είναι αυτές που πρέπει δηλαδή μια κίνηση με κωδικό παραγγελίας 1 θα αντιστοιχεί σε μια παράδοση με κωδικό παραγγελίας 1

και θέλω να βλέπω σε μια παραγγελία που έχει κινήσεις το υπόλοιπο που μένει να παραδοθεί
(αφαιρώ τις κινήσεις από τις παραδόσεις)

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες