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

Δύσκολο ORDER BY στη SQL!


alkisg

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

Δημοσ.

Καλημέρα,

 

έστω ότι έχω ένα πεδίο με λίγες μόνο τιμές: 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 πίνακα με τα βάρη και να τον χρησιμοποιήσω αντί για συνάρτηση;

Δημοσ.

Υ.Γ. το Βάρος(πεδίο) θα μπορούσε να πάει στο SELECT?

Π.χ.

SELECT Βάρος(πεδίο) as Βάρος_αναζήτησης, * from table

order by Βάρος_αναζήτησης

;

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

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

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