Avatar billede biver.dk Nybegynder
13. februar 2006 - 21:41 Der er 35 kommentarer og
1 løsning

a - b max mindst give 0

Hej

Jeg skal minus 2 variabler med hinanden, og det må mindst give nul, hvordan klarer man den?

og det skal kunne bruges i sådan en sætning her:

set pris=conn.execute("select * from priser order by a-b")

hvis a er 100 og b 200 skal det give 0
Avatar billede tofte Juniormester
13. februar 2006 - 21:52 #1
Jeg er ikke helt med på dit problem. Hvad er formålet - ønsker du at alle de tilfælde hvor a>b skal vises i en "vilkårelig" rækkefølge hvor sorteringen ikke er styret af a-b  ?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 21:54 #2
der hvor a er større end b, skal resultatet bare være 0
Avatar billede biver.dk Nybegynder
13. februar 2006 - 21:54 #3
tilfælde hvor b er større end a, fx 200-100 skal resultatet være 100
Avatar billede tofte Juniormester
13. februar 2006 - 21:57 #4
ok, så skal du bare bruge order by abs(a-b) så får du altid positive værdier ud
Avatar billede nielle Nybegynder
13. februar 2006 - 22:04 #5
Et bud:

"SELECT *, IF(a-b>0,a-b,0) AS aMinuSb FROM priser ORDER BY aMinuSb"
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:04 #6
så giver 2-3 = 1

det skal give 0
Avatar billede tofte Juniormester
13. februar 2006 - 22:06 #7
ok. Hmm så skal jeg lige tænke. Du skrev bare : tilfælde hvor b er større end a, fx 200-100 skal resultatet være 100 :-)
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:06 #8
nielle vil du forklare nærmere?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:07 #9
200-100=100 ;)

100-200=-100 (her skal det give 0 og ikke -100)
Avatar billede nielle Nybegynder
13. februar 2006 - 22:09 #10
Gerne:

IF(a-b>0,a-b,0)

- giver a-b hvis a>b og 0 ellers.

Med "AS aMinuSb" bliver denne værdi kendt under aliaset "aMinuSb". Det er dette alias som bruges under "ORDER BY" ledet.
Avatar billede nielle Nybegynder
13. februar 2006 - 22:09 #11
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:10 #12
prøver det lige....
Avatar billede tofte Juniormester
13. februar 2006 - 22:12 #13
min fejl.... Godt jeg ikke lever af at regne...
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:14 #14
Unknown column 'aMinuSb' in 'order clause'
Avatar billede nielle Nybegynder
13. februar 2006 - 22:16 #15
Virker denne version (pånær sorterimngen):

"SELECT *, IF(a-b>0,a-b,0) AS aMinuSb FROM priser"
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:22 #16
ja
Avatar billede nielle Nybegynder
13. februar 2006 - 22:28 #17
Så prøv denne:

"(SELECT *, IF(a-b>0,a-b,0) AS aMinuSb FROM priser) ORDER BY aMinuSb DESC"
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:33 #18
der kommer stadig en fejl.... kan det være fordi jeg gange aMinuSb med c?
Avatar billede nielle Nybegynder
13. februar 2006 - 22:35 #19
Hvor gør du det?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:38 #20
"(SELECT *, IF(a-b>0,a-b,0) AS aMinuSb FROM priser) ORDER BY (aMinuSb * C) DESC"
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:38 #21
der
Avatar billede nielle Nybegynder
13. februar 2006 - 22:40 #22
Hvorfor ikke sådan?

"(SELECT *, IF(a-b>0,a-b,0)*c AS aMinuSbGangEc FROM priser) ORDER BY aMinuSbGangEc DESC"
Avatar billede nielle Nybegynder
13. februar 2006 - 22:43 #23
Eller måske:

"SELECT (SELECT *, IF(a-b>0,a-b,0) AS aMinuSb FROM priser) ORDER BY (aMinuSb * C) DESC"
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:43 #24
tror det virker nu, skal bare lige tilrettes...
smid et svar
Avatar billede nielle Nybegynder
13. februar 2006 - 22:46 #25
Hvilken af versionerne?

... og et svar :^)
Avatar billede biver.dk Nybegynder
13. februar 2006 - 22:59 #26
virker desværre ikke... der kommer bare ingen fejl
Avatar billede biver.dk Nybegynder
13. februar 2006 - 23:01 #27
sådan her er den skrevet:
set pris=conn.execute("(SELECT *, IF("& session("pm1") &"-m2>0,"& session("pm1") &"-m2,0) * "& session("pm1") &" * m1 + abb + sms * "& session("psms") &" + mms * "& session("pmms") &" AS pris FROM abb) order by pris DESC")
Avatar billede nielle Nybegynder
13. februar 2006 - 23:01 #28
Hvis der ikke kommer nogen fejl, så må der være noget som virker :^)

Hvad sker der? Hvad sker der ikke? Hvad forventede du at der skulle ske?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 23:03 #29
at den billigste vil komme først
Avatar billede nielle Nybegynder
13. februar 2006 - 23:07 #30
Hvis den billigste skal først så skal det være ASC (Ascending = Stigende) i stedet for DESC (Descending = Faldende).
Avatar billede biver.dk Nybegynder
13. februar 2006 - 23:11 #31
kan jeg ikke skrive variablen pris et sted så jeg kan se hvordan den sorterer?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 23:13 #32
så virker det, bortset fra at 0 kommer til sidst?
Avatar billede biver.dk Nybegynder
13. februar 2006 - 23:14 #33
kan det laves nemt?
Avatar billede nielle Nybegynder
13. februar 2006 - 23:15 #34
Sådan?

Set rs = Conn.Execute("(SELECT *, IF(" & Session("pm1") & "-m2>0," & Session("pm1") & "-m2,0) * " & Session("pm1") & " * m1 + abb + sms * " & Session("psms") & " + mms * " & Session("pmms") & " AS pris FROM abb) ORDER BY pris ASC")
Response.Write rs("pris")
Avatar billede nielle Nybegynder
13. februar 2006 - 23:16 #35
0 burde ikke komme til sidst?

(Bliver altså nødt til at smutte for i dag nu - g'nat :^)
Avatar billede nielle Nybegynder
14. februar 2006 - 15:45 #36
Fik du det til at virke 100%?
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