OPTIONS in een SELECT statement sorteren?

Pagina: 1
Acties:

  • Zaagmans
  • Registratie: Januari 2000
  • Laatst online: 16-07 21:13
Ok , na een onbevredigend resultaat na een aantal search acties post ik hier maar het probleem.

Ik heb 2 tabellen: mannen en vrouwen.
Ik wil dus alle namen van de mannen en de vrouwen in zo'n select keuzeveld zetten, maar dat moet dus wel alfabetisch gesorteerd zijn.

Ik haal de info met ASP uit de tabellen.
Ik weet dat je met je query kan sorten, maar ik doe twee keer een query omdat ik op 2 verschillende tabellen werk -> alle mannen onder elkaar gesorteerd en daaronder alle vrouwen gesorteerd. Dus niet als geheel gesorteerd. Voorbeeld van hoe het nu gaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<select>
<% oConn.Open "Database" 
   oRS.Open "SELECT Naam FROM Man ORDER BY Naam", oConn, adOpenStatic, adLockReadOnly
%>
<% Do While Not oRS.EOF %>
<option><% =oRS("Naam") %></option>
<% oRS.MoveNext
   Loop
   oRS.Close
   oConn.Close
%>
<% oConn.Open "Database" 
   oRS.Open "SELECT Naam FROM Vrouw ORDER BY Naam", oConn, adOpenStatic, adLockReadOnly
%>
<% Do While Not oRS.EOF %>
<option><% =oRS("Naam") %></option>
<% oRS.MoveNext
   Loop
   oRS.Close
   oConn.Close
%>
</select>

Bovenstaande heeft als resultaat:

Arie
Henk
Kees
Piet
Claudia
Marie
Petra
Renate

Maar het moet zijn:

Arie
Claudia
Henk
Kees
Marie
Petra
Piet
Renate

Is er een manier om het eerst in een textfile ofzo op te slaan en dan daarin te sorteren? (ik roep maar iets geks)
Zo ja, plz post de source/de manier hoe het moet want ik heb echt geen ID :'( :?

Ohja het MOET in een SELECT vorm zijn. Javascript etc alles mag gebruikt worden..

edit:
typvautjes

- Ruud


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

kan je het niet in 1 query gooien (met een UNION) ?
dus:

SELECT Naam FROM Man
UNION
SELECT Naam FROM Vrouw
ORDER BY Naam

btw: het was natuurlijk handiger geweest als alle namen in 1 table hadden gestaan met een Gender kolom erbij.

Today's subliminal thought is:


  • Zaagmans
  • Registratie: Januari 2000
  • Laatst online: 16-07 21:13
Op vrijdag 28 september 2001 14:05 schreef Annie het volgende:
kan je het niet in 1 query gooien (met een UNION) ?
dus:

SELECT Naam FROM Man
UNION
SELECT Naam FROM Vrouw
ORDER BY Naam

btw: het was natuurlijk handiger geweest als alle namen in 1 table hadden gestaan met een Gender kolom erbij.
Erm tja het is nou eenmaal zo...
Alhoewel dit wel voor problemen zorgt als je twee verschillende velden hebt, toch?? Ik heb een man die werkt bij een bedrijf:

SELECT Achternaam from Man
UNION
SELECT Naam From Bedrijf
ORDER BY Achternaam, Naam

:?

edit:

Dan geeft ie dus in de oRS zowel de Man.Achternaam terug, als de Bedrijf.Naam

Hoe meot ik dat dan met die <option><% oRS("Achternaam") %></option> en de <option><% oRS("Naam") %></option>

Dan krijg ik dus lege option velden ofzo?


Bedankt voor de snelle reactie trouwens !!!

- Ruud


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

in een array stoppen en dan de array sorteren.

(aangezien je 2 array's hebt die al gesorteerd zijn, kun je hier mergesort perfect voor gebruiken)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

kan dit ook? Ik heb een man die werkt bij een bedrijf:
SELECT Voornaam, Achternaam from Man
UNION
SELECT Naam From Bedrijf
ORDER BY Achternaam, Naam
nee dat kan niet, bij een UNION moet het aantal van de kolommen overeenkomen (en het type moet ook compatible zijn).

Today's subliminal thought is:


  • Zaagmans
  • Registratie: Januari 2000
  • Laatst online: 16-07 21:13
Op vrijdag 28 september 2001 14:11 schreef wasigh het volgende:
in een array stoppen en dan de array sorteren.

(aangezien je 2 array's hebt die al gesorteerd zijn, kun je hier mergesort perfect voor gebruiken)
Kan je me een voorbeeld code geven? Ook zodat ik dat weer gesorteerd in die <option></option> dingen zet?

Bij voorbaat dank!

- Ruud


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

als ik je overigens nog een tip mag geven (geheel gratis ;)):

- verwijder de overbodige asp-tags, telkens openen en sluiten van een blok waar het niet nodig is kost performance.
- je opent en sluit de database-connectie 2 maal, terwijl 1 keer openen, twee queries uitvoeren, en sluiten voldoende is (scheelt ook weer wat performance)
- de code kan ook wat netter inspringen, imho.

Today's subliminal thought is:


  • Zaagmans
  • Registratie: Januari 2000
  • Laatst online: 16-07 21:13
Op vrijdag 28 september 2001 14:20 schreef Annie het volgende:
als ik je overigens nog een tip mag geven (geheel gratis ;)):

- verwijder de overbodige asp-tags, telkens openen en sluiten van een blok waar het niet nodig is kost performance.
- je opent en sluit de database-connectie 2 maal, terwijl 1 keer openen, twee queries uitvoeren, en sluiten voldoende is (scheelt ook weer wat performance)
- de code kan ook wat netter inspringen, imho.
1 - ik gebruik allemaal includes, maar wilde het ff voor de 'duidelijkheid' maar ff uitschrijven hier
2 - aha goed id, 1 keer openen is voldoende inderdaad...
3 - Hier in mijn ultraedit ziet het er piekfijn uit, maar ik had geen zin om totale layout stuff hier op los te laten.

Trouwens over dat javascript array gebeuren heb ik al wat gevonden: http://www.4guysfromrolla.com/demos/2dsort.asp

Bedankt voor al jullie hulp!

- Ruud


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

ik ben geen ASP held maar ik kan het wel globaal uitleggen

Je haalt met de query's de 2 lijsten van namen op. Deze stop je in allebei in een array. (je hebt dus 2 array's)
deze array's zijn al op naam gesorteerd door middel van je qeury.

Nu kun je erg simpel 1 grote gesorteerde array van maken:
-> je maakt een array aan waar alle elementen inkunnen
-> je maakt twee variabelen aan die noem je de arrayPointers
-> verder hoe je bij waar je bent in de "grote" array
-> je pakt de waarden uit je array's waar je arrayPointers naar wijzen. In het begin zal dit altijd o zijn.
-> je kijkt welk van de 2 waardes het kleinste is en die stop je in de "grote" array
-> dan hoog je de arrayPointer van waarruit je de waarde hebt gepakt met 1 op, en start je opnieuw met deze waarden te vergelijken

Zo krijg je altijd de kleinste van de 2 op de volgende positie in de grote array, erg snel en simpel :)

[dit principe is niet door mij bedacht, maar is een onderdeel van mergesort, zoek daar anders eens op]

  • Zaagmans
  • Registratie: Januari 2000
  • Laatst online: 16-07 21:13
Op vrijdag 28 september 2001 15:01 schreef wasigh het volgende:
ik ben geen ASP held maar ik kan het wel globaal uitleggen

Je haalt met de query's de 2 lijsten van namen op. Deze stop je in allebei in een array. (je hebt dus 2 array's)
deze array's zijn al op naam gesorteerd door middel van je qeury.

Nu kun je erg simpel 1 grote gesorteerde array van maken:
-> je maakt een array aan waar alle elementen inkunnen
-> je maakt twee variabelen aan die noem je de arrayPointers
-> verder hoe je bij waar je bent in de "grote" array
-> je pakt de waarden uit je array's waar je arrayPointers naar wijzen. In het begin zal dit altijd o zijn.
-> je kijkt welk van de 2 waardes het kleinste is en die stop je in de "grote" array
-> dan hoog je de arrayPointer van waarruit je de waarde hebt gepakt met 1 op, en start je opnieuw met deze waarden te vergelijken

Zo krijg je altijd de kleinste van de 2 op de volgende positie in de grote array, erg snel en simpel :)

[dit principe is niet door mij bedacht, maar is een onderdeel van mergesort, zoek daar anders eens op]
Dank je voor de hulp, ik zal het gelijk proberen...

- Ruud

Pagina: 1