Avatar billede skumflum Nybegynder
20. oktober 2000 - 11:23 Der er 26 kommentarer

SQL orderby problemer

Jeg har en tabel som skal udskrives efter uge dag (mandag, tirsdag,
onsdag...) Ugedagene er af typen streng i databasen, så man kan ikke bruge div. date funktioner. Samtidig skal denne tabel joines med andre... har prøvet med

\"SELECT hold.*, ansat.*, uge.* FROM hold, ansat, uge WHERE ansat.nr = hold.fransat  AND uge.frhold = hold.holdnr AND uge.ugenr = \"& Session(\"uge\") &\" \" &_
  \" ORDER BY hold.dag = \'Mandag\',\'Tirsdag\',\'Onsdag\',\'Torsdag\',\'Fredag\',\'Lørdag\',\'Søndag\'\"

Mandag bliver den første dag der bliver udskrevet, men derefter virker det ret tilfældigt. Forslag?
Avatar billede webbe Nybegynder
20. oktober 2000 - 11:26 #1
Hvis dine feltnavne indeholder de viste specialtegn er det det der er problemet.
Der er generelt en god ide at bruge underscore hvis man har et feltnavn der består af flere og og undgå brugen af specialtegn!
Avatar billede skumflum Nybegynder
20. oktober 2000 - 11:30 #2
specieltegn.... du skal ikke regne &\"_ , \' med. Det er fordi jeg har \"ctrl+c\" og \"ctrl+v\" ind her. \'Mandag\' med \" \' \" bliver brugt fordi ugedagen er defineret som en streng. Det er mere ORDER BY jeg er i tvivl om... Kan man bruge den til at selv definere rækkefølgen eks. 1 = mandag 2 = tirsdag m.m.
Avatar billede lthrane Nybegynder
20. oktober 2000 - 11:57 #3
Jeg kender ikke tricket til at få det til at lykkes med dine eksisterende tabeller/data....

Måske er du nødt til at ændre i din database, og lave en lille tabel (ugedage) der indeholder dagnr og dagnavn, og så relatere til den fra din hold tabel. Så kan du jo lave en order by på ugedage.dagnr.

lthrane
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:00 #4
Ikke særlig pænt ;)... Måske bliver man nød til at programere sig ud af det!
Avatar billede webbe Nybegynder
20. oktober 2000 - 12:09 #5
Med specieltegn refererer jeg til din tabel i databasen!
Med andre ord punktum og stjerne (.*)
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:12 #6
Det er fordi jeg vælger fra flere tabeller. hold.* betyder at alle felter fra tabellen hold vælges
Avatar billede webbe Nybegynder
20. oktober 2000 - 12:16 #7
Hvis du via en SQL-sætning skal vælge alle felter fra en tabel skal du skrive \"SELECT * FROM hold, ansat, uge.....\"
Hvis det er specifikke felter i én tabel skriver du \"SELECT hold, ansat uge FROM.....\"
Avatar billede stig3 Mester
20. oktober 2000 - 12:21 #8
en måde ville være at oprette en ny tabel i databasen, der indeholder:
nr  dag
1  mandag
2  tirsdag
osv...

Så kan du joine og sortere efter nr.

Måske ikke så kønt, men det burde da virke i stedet for at være nød til at lave 7 forskellige forespørgsler.
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:23 #9
Det virker på samme måde... har altid brugt det sådan
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:25 #10
Man kan altså ikke bruge ORDER BY og definere sin egen orden?
Avatar billede stig3 Mester
20. oktober 2000 - 12:25 #11
Var det mit du mener ??? og hvad mener du
Avatar billede stig3 Mester
20. oktober 2000 - 12:28 #12
nåh...

Det mener jeg ikke, at man kan. Men det er vel heller ikke så hensigtsmæssigt, hvis nu der kom en maandag(stavefejl) ind i tabellen. Dermed ville den ikke vide, hvad den skulle gøre. Med inner join vil den så slet ikke vise den.
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:28 #13
Øhh mit oprindelige ORDER BY hold.dag = \'mandag\',\'tirsdag\', ...
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:30 #14
hmmm. man kan vel også programere sig ud af det
Avatar billede stig3 Mester
20. oktober 2000 - 12:31 #15
ja

men det virkede da ikke vel.

Hvis man laver en tabel med \"order-rækkefølgen\", som jeg foreslog ville du selv kunne angive rækkefølgen heri.
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:31 #16
Hvorfor er det kun dig (stig3) jeg kan vælge at acceptere eller afvise?
Avatar billede stig3 Mester
20. oktober 2000 - 12:32 #17
de andre har laveet kommentarer

Men hvis du vælger at programmere dig fra det bliver det rodet.
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:32 #18
Det er desvære ikke muligt. Det ville kræve et enormt arbejde
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:34 #19
åååh bare 42 x IF THEN ELSE
Avatar billede stig3 Mester
20. oktober 2000 - 12:35 #20
nej, hvorfor det ???

tabellen skal jo kun indeholde 7 poster.

Men det skal måske dokumenters i 17 eksemplarer og gennem diverse organisatoriske forhindringsbaner ?
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:36 #21
Noget i den stil ;-)
Avatar billede skumflum Nybegynder
20. oktober 2000 - 12:36 #22
Men ellers en god idé
Avatar billede stig3 Mester
20. oktober 2000 - 12:38 #23
tjaa, så bliver du vel nød til at tage (den knap så pæne) programmeringsløsning.

og lave syv forespørgsler.

Men det virker ikke særlig robust !!!
Avatar billede lthrane Nybegynder
20. oktober 2000 - 13:15 #24
som det fremgår af min kommentar  (3. øverst) mener jeg det samme som stig3.

Og jeg synes ikke det er \'ikke særlig pænt\' - jeg synes sgu\' det er måden at lave det på !!

lthrane
Avatar billede stig3 Mester
20. oktober 2000 - 13:20 #25
ups....

Jeg havde ikke set dit indlæg. Du må undskylde at jeg gentog det.

Men jeg er enig i at det er en lappeløsning at programmere sig fra det i stedet for at lave det rigtigt første gang.

Lappeløsninger er der i forvejen for mange af.
Avatar billede lthrane Nybegynder
20. oktober 2000 - 13:25 #26
Ja - laves løsningen i databasen kan andre applikationer også have glæde af dem..... og ja - så er der jo også lige det der med at man kun skal rette eet sted hvis noget skal ændres

men vi kunne vel blive ved med at skulderklappe hinanden - jeg stopper her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester