Γεια χαρά
Ποιός είναι ο καλύτερος τρόπος για να εμφανίσουμε ένα leftmenu που έρχεται από βάση? Παλιότερα με χρήση classic ASP 3.0, δημιουργούσαμε
recordset μέσα se recordset και εμφανίζαμε τα παιδιά της κάθε κατηγορίας. Όμως η αυτό είχε σαν αποτέλεσμα να κάνουμε πολλαπλά select
για κάθε παιδί, ώστε να φέρουμε τα παιδιά του παιδιού..
δηλ έχουμε τον πίνακα "keimena" όπου :
(
keimena_id int primary key,
keimena_title nvarchar(100),
keimena_parent int not null
keimena_showleftmenu bit
)
Έχουν αλλάξει καθόλου με τώρα τα πράγματα? Δυστυχώς χρησιμοποιώ ακόμη sql server 2000 και όχι την 2005 ώστε να κάνω χρήση του self referenced table.
Υπάρχει τίποτα τέτοιο σε 2000 ?
Για να αποφύγω τα πολλά select έχω σκεφτεί 2 τρόπους. Δεν γνωρίζω αν είναι καλοί από θέμα performance.
Αν υποθέσουμε ότι το path των selected άρθρων είναι : 2 > 28 > 29 > 318 > 324. Τότε :
a) Φέρνω σε έναν dataTable όσα εμφανίζονται στο leftmenu=1. Loop-άρω όλες τις εγγραφές μία μία και για κάθε id που βρίσκω ξανα-καλώ
με ένα filter και φέρνω τα data όπου το (keimena_parent = reader["keimena_id"]). Αλλά αυτό μου δημιουργεί αρκετούς dataTable.
b) έχω φέρει σε 5 arrays όλα τα ids με ένα SELECT. δηλ. όλα όσα έχουν keimena_parent=2, όλα όσα έχουν keimena_parent=28,
όλα όσα έχουν keimena_parent=29, όλα όσα έχουν keimena_parent=318
άρα έχω :
int[] arrayNavigation = {2, 28, 29, 318, 324}
int[] array1 = {3, 4, 5, 6, 28} ......................... όσα έχουν keimena_parent=2
int[] array2 = {29, 30, 31, 32, 33, 34}.................όσα έχουν keimena_parent=28
int[] array3 = {310, 311, 312, 313, 318, 319}.......όσα έχουν keimena_parent=29
int[] array4 = {324, 325, 326}.............................όσα έχουν keimena_parent=318
Μπορώ κάπως να φτιάξω το δέντρο ώστε μετά να διαβάσω τα IDs με την σειρά ?
δηλ το αποτέλεσμα να είναι της μορφής :
|1
|2
---->
|10 |3
|11 |4
|12 |5
|6
|28
|--->29
|---->|310
|---->|311
|---->|312
|---->|313
|30
|31
|32
|33
|34
Αν υπάρχει κάποιος άλλος τρόπος, πάντα ευπρόσδεκτος.
Ευχαριστώ.