Shorin Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Καλησπέρα. Μπαίνω στο θέμα κατευθείαν. Έχω μία βάση σε Access η οποία περιλαμβάνει 2 πίνακες. Στον πρώτο πίνακα έχω π.χ. κάποια προϊόντα για PC με τις ονομασίες τους, την τιμή, και τον κωδικό που τα έχω καταχωρημένα. Στον 2ο πίνακα έχω το όνομα του προϊόντος των κωδικό και κάποιες άλλες πληροφορίες. Θέλω λοιπόν να φτιάξω ένα Query που θα παίρνει τις τιμές δλδ τα ονόματα από τον πρώτο πίνακα (ονόματα των προϊόντων), θα τα συνδέει με τον 2ο και θα εμφανίζει τα στοιχεία για κάθε προϊον... Θα δίνω για παράδειγμα "modem" ως search string και θα μου βγάζει μια λίστα με όλα τα προϊόντα που ξεκινούν από την λέξη "modem" και όχι ότι υπάρχει και κάτω από αυτήν (π.χ. "printer") και με click στο στοιχείο της λίστας να εμφανίζονται οι επιπλέον πληροφορίες για το προϊόν αυτο... Μήπως ζητάω πολλά...Sorry πάντως και thanks προκαταβολικά...
Γηρυόνης Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Για να εμφανίσεις στοιχεία από δύο πίνακες χρησιμοποίησε κάτι σαν το παρακάτω SELECT table1.column1, table1.column2, table2.column1, table2.column4 FROM ATable table1, AnotherTable table2 WHERE table1.id=table2.id AND table1.product LIKE '%modem%' Η εναλλακτική λύση που έχεις είναι να κάνεις ένα JOIN ή ένα UNION Αυτό θα σου επιστρέψει ένα σύνολο με όλα τε δεδομένα που θα ταιριάζουνε στα παραπάνω κριτήρια. Θα πρέπει από εκεί και πέρα να τα επεξεργαστείς και να εμφανίσεις με τον κατάλληλο τρόπο.
patrick Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Εγώ θα σου πρότεινα φιλαράκι να δοκιμάσεις αυτό το query: SELECT table1.column1, table1.column2, table2.column1, table2.column4 FROM ATable table1, AnotherTable table2 WHERE table1.product LIKE '%modem%' AND table1.id=table2.id Αν έχεις πολλά δεδομένα ειδικά, θα παρατηρήσεις ότι είναι πολύ πιο γρήγορο όταν δίνεις πρώτα την συνθήκη αναζήτησης και μετά τις συνθήκες του join! (Sorry φίλε Γηρυόνη )
The_Edge Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Αν έχεις πολλά δεδομένα ειδικά, θα παρατηρήσεις ότι είναι πολύ πιο γρήγορο όταν δίνεις πρώτα την συνθήκη αναζήτησης και μετά τις συνθήκες του join! Αυτό που λες δεν είναι απόλυτο!! Πχ, στη συγκεκριμένη περίπτωση που η συνθήκη είναι > LIKE '%modem%' δεν υπάρχει περίπτωση να είναι πιο γρήγορο. Όσο πιο πολλά είναι τα δεδομένα, τόσο περισσότερο θα αργεί το query... Μία ψήφος στον Γηρυόνης από εμένα
patrick Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Εξακολουθώ να διαφωνώ... Αυτό που λες θα ίσχυε αν έκανε αναζήτηση π.χ. > like '%a%' Αν και πάλι παίζεται... Φαντάσου ας πούμε να έχεις 2 πίνακες με 100 rows ο καθένας, στην δική σου την περίπτωση θα κάνει αναζήτηση σε 100 * 100 = 10000 rows (όσο και το καρτεσιανό γινόμενό τους, (μη συμπεριλαμβανομένου του join) ή στις στήλες του join, οι οποίες πάλι είναι πολύ περισσότερες από 100 φυσικά! ), ενώ στην δική μου, θα κάνει αναζητήση στον 1ο πίνακα μόνο (100 rows) και μετά θα κάνει join με τα αποτελέσματα της αναζήτησης ΚΑΙ ΜΟΝΟ ΑΥΤΑ! Όποιος δεν συμφωνεί ας κάνει δοκιμές και ας μου πει!
The_Edge Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 patrick, έχεις διαβάσει ποτέ πώς δουλεύουν τα indices και τί ρόλο παίζουν στις αναζητήσεις? Έχεις τρέξει ποτέ query με like σε πραγματικά μεγάλο όγκο δεδομένων (και βέβαια, τί σημαίνει για σένα πραγματικά μεγάλος όγκος?) Τέσπα, έχουμε δύο διαφορετικές απόψεις και δεν έχει νόημα να τις υπερασπιστούμε, αφού μόνο οι δοκιμές θα δείξουν τί ακριβώς συμβαίνει (συν ότι πλέον έχουμε ξεφύγει εκτός θέματος).
drm Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 εχω την εντύπωση πως είναι ακόμα πιο γρήγορ να δώσεις το Join με Join και όχι με συνθήκη ελέγχου ...
Γηρυόνης Δημοσ. 24 Ιουλίου 2004 Δημοσ. 24 Ιουλίου 2004 Εγώ θα σου πρότεινα φιλαράκι να δοκιμάσεις αυτό το query: SELECT table1.column1' date=' table1.column2, table2.column1, table2.column4 FROM ATable table1, AnotherTable table2 WHERE table1.product LIKE '%modem%' AND table1.id=table2.id Αν έχεις πολλά δεδομένα ειδικά, θα παρατηρήσεις ότι είναι πολύ πιο γρήγορο όταν δίνεις πρώτα την συνθήκη αναζήτησης και μετά τις συνθήκες του join! (Sorry φίλε Γηρυόνη )[/quote'] Make it work first and optimize later :wink:
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.