Velden sorteren

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Hoi,

Ik had een vraagje... ik heb een tabel met de volgende velde in deze volgorde:

a,b,x,z,e,f

Nu wil ik ze sorteren in een query zodat ik ze in één keer krijg uitgespuugt in de command prompt (Komt in een tekst bestand, ik wil geen xtra script gebruiken) op de volgende volgorde...

a,b,e,g,x,z

Is er zo'n soort query zoiets als:

SELECT * FROM tabel ORDER FIELDS

Dank je, en als toevoeging van het boventste:
Als ik nou een variabele tabel heb waarin je het aantal velden kunt veranderen bijvoorbeeld een rechten systeem waar je een module aan kunt toevoegen en verwijderen en voor elke module een veld moet hebben... als je dit vaak doet krijg je een zootje bij het uit spugen... nu is dit niet zo'n probleem in de db zelf maar bij een script die de velden telt en dan alles uit spuugt wel...
Ik heb trouwens al gezocht...

Trouwens... ACM ik heb al vaak van jou gelezen gekregen dat men het bericht van de topic starter beter moeten lezen. Zou jij dat dan ook willen doen

Ow ja... misschien is er wel een alternatief voor... als het niet anders kan mag het in een script... PHP, ASP, Perl... alles mag...
Titel: Velden sorteren op veldnaam

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ja en in elke manual zul je zien dat dat "ORDER BY kolomnaam" is...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bij deze weer open.
Zorg voor een goede uitleg en een goede titel, die titel edit ik er later wel boven dan.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

a,b,e,g,x,z

Is er zo'n soort query zoiets als:

SELECT * FROM tabel ORDER FIELDS
Nee, je kan de resultaten (records) sorteren door een order by.

Jij wilt je kolommen in volgorde laten sorteren, wat betekent dat je gewoon geen select * moet doen maar een select a,b,e,g,x,z.

Bovendien is wat je van plan bent erg slecht qua database design. Je zou nog een keertje een normalisatie manual kunnen doornemen en dan besluiten om het wel op de juiste manier te doen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

je kunt de veldnamen van de recordset opvragen en bv. in een array zetten en sorteren. Vervolgens zet je ze in de volgorde van de array op het scherm.

wil niet lullig zijn na alle moeite die je hebt gedaan om dit topic te heropenen, maar [topic=456796] staat nog open, met de zelfde vraag volgens mij ;)

kaart != map && bottel != fles
Wacht op antwoord


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 03 april 2002 14:03 schreef dusty het volgende:
[..]
Grompf... je leest niet...
Op woensdag 03 april 2002 14:09 schreef j_du_pee het volgende:
je kunt de veldnamen van de recordset opvragen en bv. in een array zetten en sorteren. Vervolgens zet je ze in de volgorde van de array op het scherm.

wil niet lullig zijn na alle moeite die je hebt gedaan om dit topic te heropenen, maar [topic=456796] staat nog open, met de zelfde vraag volgens mij ;)
Dat is beter... maar ik had gehoopt op een makkelijker oplossing... die array sort heb ik al...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

De beste mogenlijkheid is IMHO om eerst met een query de veldnamen op te vragen, en vervolgens hiermee de uiteindelijke data ophaal query op te bouwen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op woensdag 03 april 2002 14:26 schreef Monstar.nl het volgende:

Grompf... je leest niet...
Nee jij leest niet goed. Dusty stelt terecht dat een variable tabel ( met variable velden ) een slecht ontwerp impliceert. IMHO is dat gewoon waar.
Vertel eens? Wat leest hij fout? Omdat hij niet het 'makkelijke' antwoord geeft volgens U gezien?
Dat is beter... maar ik had gehoopt op een makkelijker oplossing... die array sort heb ik al...
:X

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Op woensdag 03 april 2002 14:26 schreef Monstar.nl het volgende:
Grompf... je leest niet...
Dusty blijkt prima te kunnen lezen, maar jij kunt niet zo goed schrijven!

Je hebt het over 'velden', wat in relationele-database-terminologie 'kolommen' betekend. Dusty gaf dan ook precies antwoord op je vraag.

Wat betreft de eigenlijke bedoeling, die enigszins duidelijk wordt uit de aanvullende informatie, denk ik dat Janoz de meest praktische oplossing heeft gegeven; eerst de kolomnamen opvragen (de query daarvoor verschilt per database geloof ik), deze kolomnamen sorteren (bijvoorbeeld simpelweg met de command-line utility sort) en vervolgens een aangepaste query uitvoeren.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 03 april 2002 14:40 schreef Soultaker het volgende:

[..]

Dusty blijkt prima te kunnen lezen, maar jij kunt niet zo goed schrijven!

Je hebt het over 'velden', wat in relationele-database-terminologie 'kolommen' betekend. Dusty gaf dan ook precies antwoord op je vraag.

Wat betreft de eigenlijke bedoeling, die enigszins duidelijk wordt uit de aanvullende informatie, denk ik dat Janoz de meest praktische oplossing heeft gegeven; eerst de kolomnamen opvragen (de query daarvoor verschilt per database geloof ik), deze kolomnamen sorteren (bijvoorbeeld simpelweg met de command-line utility sort) en vervolgens een aangepaste query uitvoeren.
Dus pas als ik het over kolommen en tupels enzo heb... dan praat ik goed...

En ja... als er geen andere oplossing is dan die met de array... die nu wordt gebruikt... dan moet dat maar zo blijven...

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Op woensdag 03 april 2002 14:43 schreef Monstar.nl het volgende:
Dus pas als ik het over kolommen en tupels enzo heb... dan praat ik goed...
Mja, eigenlijk wel. Maar ik vind m'n commentaar bij nader inzien niet zo sterk trouwens. Ik dacht eerst even dat iets heel anders de bedoeling was. Blijft het feit dat e.e.a. een stuk begrijpelijker is wanneer je de dingen bij hun naam noemt. Zeker als je wat ingewikkeldere dingen probeert uit te leggen.
En ja... als er geen andere oplossing is dan die met de array... die nu wordt gebruikt... dan moet dat maar zo blijven...
Ik denk niet dat SQL in een alternatief voorziet. Volgens het relationele databasemodel is de volgorde van kolommen namelijk irrelevant.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

uit je LA thread
Op woensdag 03 april 2002 13:50 schreef D2k het volgende:
variabel aantal velden schend de eerste normaalvorm
ik zou zeggen pak eens een SQL boek :)
Op woensdag 03 april 2002 14:01 schreef dusty het volgende:

[..]

Hoor ik daar het woordje normaliseren ? >:)
Op woensdag 03 april 2002 14:02 schreef D2k het volgende:

[..]

beter te vervangen door DATE (en zoek maar eens op boeken in P&W voor de oplossing van het vetgedrukte)

Doet iets met Cloud (MS/IBM)


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 03 april 2002 14:47 schreef Soultaker het volgende:

[..]

Mja, eigenlijk wel. Maar ik vind m'n commentaar bij nader inzien niet zo sterk trouwens. Ik dacht eerst even dat iets heel anders de bedoeling was. Blijft het feit dat e.e.a. een stuk begrijpelijker is wanneer je de dingen bij hun naam noemt. Zeker als je wat ingewikkeldere dingen probeert uit te leggen.
[..]

Ik denk niet dat SQL in een alternatief voorziet. Volgens het relationele databasemodel is de volgorde van kolommen namelijk irrelevant.
Klopt... maar ik had er op gehoopt zodat het wat -efficienter- kon... niet uitgaande van het DB ontwerp...

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROCEDURE sp_SortedSelect
@table varchar(32)
AS
begin
 declare @name varchar(32)
 declare @strsql NVARCHAR(4000)
 declare crs_name scroll cursor for
 select name from syscolumns where id = (select id from sysobjects where name = @table and type='u') order by name
 open crs_name
 fetch first from crs_name into @name
 set @strSql = "Select top 5 " + @name
 while (@@fetch_status <> -1)
 begin
    set @strSql = @strSql + ',' + @name
    fetch next from crs_name into @name
 end 
 set @strSql =  @strSql + " from " + @table
 EXEC sp_executesql @strsql
 deallocate crs_name
end

Getest op mssql7

  • Grum
  • Registratie: Juni 2001
  • Niet online
et mag toch in perl ??
code:
1
echo -n 'a,b,x,z,e,f' | perl -ne 'print join ",", sort split ","'

have fun :D
Pagina: 1