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

SQL query για δύσκολους λύτες!


skous

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

Δημοσ.

Για σας και πάλι.

 

Το πρόβλημα είναι το εξής:

 

Έχουμε 3 πίνακες. Ο Α περιέχει στοιχεία για βλάβες σε ένα όχημα, όπου μπορούμε να δώσουμε 2 βλάβες (vlavireason1, vlavireason2).

Ο Β είναι για τον επανέλεγχο και συνδέται με τον Α μέσα απο το B.VlaviID -> A.ID και επίσης μπορούμε να δώσουμε 2 βλάβες (vlavireason1, vlavireason2).

 

Ο C είναι lookup και περιέχει τα κείμενα και ΙDs για να συνδέονται τα reasons των Α και Β.

 

Υπάρχουν 3 πίνακες με τα εξής χαρακτηριστικά

 

Πίνακας Α (vlaves)

---------

Id

vlavireason1

vlavireason2

 

 

Πίνακας Β (epanelegxos)

----------------------

Id

VlaviId

vlavireason1

vlavireason2

 

Πίνακας C (reasons)

------------------

ID

Vlavireasontext

 

 

 

Αυτό που θέλω είναι το εξής:

 

Α) Να βγαίνει ένα αποτέλεσμα που να κάνει count της βλάβες, δηλαδή να λέει ότι βλάβες τύπου ABGXX εμφανίστηκαν συνολικά τόσες φορες, κτλ.

 

Β) Διαλέγοντας ένα τύπο βλάβης, να μου βγάζει σε πιο ID οχήματος (άρα ID του πίνακα Α) αυτή βρέθηκε (είτε βρέθηκε στον πίνακα Α είτε στον Β)

 

Περιμένω βοήθεια!!!

Δημοσ.

Να σου προτεινω πρωτα μερικες αλλαγες?

Car_Table

---------

Car_ID

<rest of columns>

 

Visit_Table

-----------

Visit_ID

Prev_Visit_ID

Car_ID

Vlavi_ID1

Vlavi_ID2

Info

<rest of columns>

 

Vlaves_Table

-------------

Vlavi_ID

<rest of columns>

 

Καθε επισκεψη συνδεεται με ενα αυτοκινητο, με δυο βλαβες και αν η επισκεψη ειναι επανελεγχος για μια βλαβη που παρουσιαστηκε σε προηγουμενη επισκεψη, βαζεις στο Prev_Visit_ID του το Visit_ID της πρωτης επισκεψης.

Απο τη στιγμη που αυτο που εσυ ονομαζεις "βλαβη" και "επανελεγχος" ειναι στην ουσια το ιδιο πραγμα δηλαδη μια επισκεψη, πιστευω οτι καλο ειναι να τα κρατας στο ιδιο table...

Δημοσ.

'H αμα θες να εχεις πιο πολλες βλαβες ανα επισκεψη δημιουργεις μια many to many relationship. Το Visit_Table γινεται:

Visit_ID

Prev_Visit_ID

Car_ID

Info

<rest of columns>

 

και φτιαχνεις ενα ενδιαμεσο table:

Visit_Vlavi_Table

----------------

Visit_ID

Vlavi_ID

Δημοσ.

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

 

Αυτό που θα μπορούσε?? να γίνει είναι π.χ. Multiple Selects (2 για τον Πίνακα Α (vlavireason1 vlavireason2) και 2 για τον Β (vlavireason1

vlavireason2) ταώστε να τα φέρνει όλα τελικά σε έναν πίνακα On-the-fly και μετά εκεί να κάνει count.

 

Πώς όμως;;;;

Δημοσ.

Αν έκανες ένα dataview μεταξύ των πινάκων Α και Β (από την στιγμή που συνδέονται μεταξύ τους) δεν θα ήταν πιο εύκολο να κάνεις το count μέσα απο το dataview?

Δημοσ.

Στην database σου πας στα Views και κάνεις NewView επιλέγεις του πίνακες που θέλεις να περιλαμβάνει το view σου (Πίνακας Α (vlaves) και Πίνακας Β (epanelegxos)) και τους ενώνεις σύμφωνα με το κοινό πεδίο (με το Id δηλαδή του Α και το ValidId του Β) και μετά προσαρμόζεις το Query με το count που θέλεις να κάνεις

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

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

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