Προς το περιεχόμενο

Create View με Distinct field - MySQL


x_maras

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σε όλους,

 

Προσπαθώ να φτιάξω το 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".

Έχει δοκιμάσει κανείς κάτι παρόμοιο;

Δημοσ.

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 

 

θα επιστρέψει μόνο μία εγγραφή.

Δημοσ.

Το διάβασα και γω ότι το union κάνει distinct από μόνο του.

 

Στη συγκεκριμένη περίπτωση το date είναι date of birth οπότε είναι το ίδιο...

Επίσης το key είναι συνδιασμός field ...

 

Ίσως προσπαθήσω να φτιάξω το view διαφορετικά.

 

Ευχαριστώ

Δημοσ.

Το διάβασα και γω ότι το union κάνει distinct από μόνο του.

 

Στη συγκεκριμένη περίπτωση το date είναι date of birth οπότε είναι το ίδιο...

Επίσης το key είναι συνδιασμός field ...

 

Ίσως προσπαθήσω να φτιάξω το view διαφορετικά.

 

Ευχαριστώ

 

 

Δες μήπως στο χαλάει το null που βάζεις στο δεύτερο query . Να σαι καλά

  • 2 εβδομάδες αργότερα...
Δημοσ.

Τελικά έφτιαξα ένα view πάνω στο view και έκανα Group By στα ID. Βγάζει το σωστό αποτέλεσμα, αλλά όταν παρουσίασα την εργασία στον καθηγητή μου δεν έμεινε ευχαριστημένος... πάντως τσίμπησα 8,5 ^_^ μιας και το συστημα δουλεύει και δίνει σωστά αποτελέσματα!

 

Μόλις ανακοινώσει τη λύση θα τη γράψω κι εδώ!

Αρχειοθετημένο

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

  • Δημιουργία νέου...