x_maras Δημοσ. 3 Ιουλίου 2011 Δημοσ. 3 Ιουλίου 2011 Γεια σε όλους, Προσπαθώ να φτιάξω το View από 2 tables, αλλά να έχω επίσης και μοναδικές εγγραφές. Δε μπορώ όμως να βρω λύση προς το παρόν για το πως να χρησιμοποιήσω το distinct. Αυτός είναι ο κώδικας που χρησιμοποιώ για να δημιουργήσω το view. > create view EPDView(epdId, gender, date1, name, mzkNr) AS (Select r.epdId, m.gender, m.date1, m.name, r.localNr From mzk m, Role r Where m.MZKNr=r.localNr and r.role='MZK') Union (Select r.epdId, u.gender, u.date1, u.name, null From umc u, Role r Where u.UMCNr=r.localNr and r.role='UMC') Δημιουργεί το view, αλλά αν ένας ασθενής έχει ιστορικό και στα 2 νοσοκομεία (πρόκειται για federation από 2 βάσεις νοσοκομείων στην ίδια πόλη) τον εμφανίζει 2 φορές. "Πρόκειται για άσκηση και ξέρω του κανονισμούς, αλλά δε ζητώ τη λύση ολόκληρης της άσκησης μιας και το παραπάνω είναι ένα μικρό κομμάτι από μια πραγματικά μεγάλης άσκησης." Δοκιμασα και το Union Distinct αλλά δε δουλεψε. Θέλω συγκεκριμένα να κάνω Distinct το "epdId". Έχει δοκιμάσει κανείς κάτι παρόμοιο;
Aztec Δημοσ. 3 Ιουλίου 2011 Δημοσ. 3 Ιουλίου 2011 To union αν το χρησιμοποιήσεις σκέτο λειτουργεί με λογική DISΤINCT. Δεν επιστρέφει δηλαδή τις διπλές εγγραφές. Το πρόβλημα έγκειται στο ότι επιλέγεις πολλά columns απο τους πίνακες και κάποιο απο αυτά χαλάει την μοναδικότητα. Αν επιλέξεις μόνο το κλειδί όπως αναφέρεις θα σου πάιξει αυτόματα χωρίς πρόβλημα. Δηλαδή αν έχεις >TABLE 1 KEY NAME DATE -------------------------- 1 AZTEC 01-01-2010 Και TABLE2 KEY NAME DATE -------------------------- 1 AΖΤEC 02-01-2010 Και κάνεις >select key,name,date from table1 union select key,name,date from table2 Θα σου επιστρέψει δύο εγγραφές καθώς αλλάζει η ημερομηνία. Ενώ αν δώσεις >Select key,name from table1 union select key,name from table2 θα επιστρέψει μόνο μία εγγραφή.
x_maras Δημοσ. 3 Ιουλίου 2011 Μέλος Δημοσ. 3 Ιουλίου 2011 Το διάβασα και γω ότι το union κάνει distinct από μόνο του. Στη συγκεκριμένη περίπτωση το date είναι date of birth οπότε είναι το ίδιο... Επίσης το key είναι συνδιασμός field ... Ίσως προσπαθήσω να φτιάξω το view διαφορετικά. Ευχαριστώ
Aztec Δημοσ. 3 Ιουλίου 2011 Δημοσ. 3 Ιουλίου 2011 Το διάβασα και γω ότι το union κάνει distinct από μόνο του. Στη συγκεκριμένη περίπτωση το date είναι date of birth οπότε είναι το ίδιο... Επίσης το key είναι συνδιασμός field ... Ίσως προσπαθήσω να φτιάξω το view διαφορετικά. Ευχαριστώ Δες μήπως στο χαλάει το null που βάζεις στο δεύτερο query . Να σαι καλά
x_maras Δημοσ. 14 Ιουλίου 2011 Μέλος Δημοσ. 14 Ιουλίου 2011 Τελικά έφτιαξα ένα view πάνω στο view και έκανα Group By στα ID. Βγάζει το σωστό αποτέλεσμα, αλλά όταν παρουσίασα την εργασία στον καθηγητή μου δεν έμεινε ευχαριστημένος... πάντως τσίμπησα 8,5 μιας και το συστημα δουλεύει και δίνει σωστά αποτελέσματα! Μόλις ανακοινώσει τη λύση θα τη γράψω κι εδώ!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.