alkisg Δημοσ. 11 Μαρτίου 2007 Δημοσ. 11 Μαρτίου 2007 Καλημέρα, έστω ότι έχω ένα πεδίο με λίγες μόνο τιμές: 1, 2, 3, 4, 5, και οι χρήστες ζητάνε ταξινόμηση των αποτελεσμάτων ενός query με βάση οποιονδήποτε από τους δυνατούς συνδυασμούς, π.χ. 3, 1, 2, 4, 5 ή 4, 3, 2, 5, 1 όπου δηλαδή δεν είναι ούτε ASCENDING ούτε DESCENDING. Δηλαδή, στην πρώτη περίπτωση οι χρήστες ζητάνε να τους δείξω πρώτα όλα τα rows που το πεδίο είναι 3, μετά τα rows που το πεδίο είναι 1, και ακολουθούν τα 2, 4, 5. Πώς μπορώ να κάνω τέτοια ταξινόμηση; Ένας τρόπος θα ήταν να κάνω 5 διαφορετικές SELECT (η πρώτη με πεδίο = 3, η δεύτερη με πεδίο = 1 κτλ) και μετά να τις κάνω UNION, αλλά στην πραγματικότητα το πεδίο αυτό μπορεί να πάρει 10 διαφορετικές τιμές, οπότε θέλω 10 UNIONS, και το ερώτημα καταντάει βαρύ... Ψάχνω κάτι σαν συνάρτηση, όπου θα μπορώ να του λέω ORDER BY Βάρος(πεδίο) Αν το έκανα με κλασσικό προγραμματισμό, το Βάρος θα ήταν ένας πίνακας: Βάρος[3] = 1 Βάρος[1] = 2 Βάρος[2] = 3 Βάρος[4] = 4 Βάρος[5] = 5 όπου δηλαδή σαν δείκτη στον πίνακα θα έβαζα το πεδίο, και το αποτέλεσμα θα ήταν η προτεραιότητα στην αναζήτηση. Αλλά δεν έχω ιδέα πως μπορεί να γίνει αυτό σε SQL. Καμία ιδέα; Μήπως μπορώ να φτιάξω έναν SQL πίνακα με τα βάρη και να τον χρησιμοποιήσω αντί για συνάρτηση;
alkisg Δημοσ. 11 Μαρτίου 2007 Μέλος Δημοσ. 11 Μαρτίου 2007 Υ.Γ. το Βάρος(πεδίο) θα μπορούσε να πάει στο SELECT? Π.χ. SELECT Βάρος(πεδίο) as Βάρος_αναζήτησης, * from table order by Βάρος_αναζήτησης ;
alkisg Δημοσ. 11 Μαρτίου 2007 Μέλος Δημοσ. 11 Μαρτίου 2007 ΟΚ, το βρήκα, η Βάρος() που έλεγα είναι η ELT της SQL.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.