|
| Tæl hvilken placering en række har Fra : Jacob Læssøe Nielsen |
Dato : 20-04-04 21:31 |
|
Når nu jeg har en tbl med ex. 3 rækker (Id, antal), og laver en select på at
få udtrukket række ID 2, hvordan formulerer jeg så, at jeg ønsker at få af
vide hvad nummer i forhold til "antal" at rækken er:
ID Antal
1 5
2 7
3 3
Så jeg response.writer
"ID 2 er placeret som nummer 1"
Sort snak, eller? Skal lige siges at tabellen i virkeligeheden rummer 2000
rækker
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jens Gyldenkærne Cla~ (20-04-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 20-04-04 21:37 |
|
Jacob Læssøe Nielsen skrev:
> Når nu jeg har en tbl med ex. 3 rækker (Id, antal), og laver
> en select på at få udtrukket række ID 2, hvordan formulerer
> jeg så, at jeg ønsker at få af vide hvad nummer i forhold til
> "antal" at rækken er:
Hvis det er i forhold til dit postsæt, kan du bruge en simpel
tællervariabel:
Dim i
i = 0
' Hent data
Do While Not rs.EOF
i = i + 1
Response.write "ID " & rs("id") & " er nummer " & i & "<br>"
rs.movenext
Loop
Hvis det er i forhold til hele tabellen - altså "på hvilken plads
står id 42?" kan spørgsmålet ikke besvares. Poster i en database
står principielt ikke i nogen foruddefineret rækkefølge, så
medmindre man sorterer efter et eller flere felter, giver det ikke
mening at tale om "post nr. 42". I praksis har flere databaser
dog en fast standardsortering - i tabeller med et
autonummereringsfelt vil det ofte svare til en normal (stigende)
sortering på dette felt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jacob Læssøe Nielsen (20-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 20-04-04 22:22 |
|
> Dim i
> i = 0
> ' Hent data
> Do While Not rs.EOF
> i = i + 1
> Response.write "ID " & rs("id") & " er nummer " & i & "<br>"
> rs.movenext
> Loop
Den kunne jeg også bruge, men det er i forbindelse med at jeg trækker TOP 1
* ORDER BY Antal DESC (altså sidst "ankomne" ID" med et given talt i "Antal"
i db), ud og ønsker at vide på hvilken plads den er placeret på målt på
Antal forhold til alle andre rækkers Antal (felt i db).
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jakob Andersen (20-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 20-04-04 22:00 |
|
Jacob Læssøe Nielsen wrote:
> Når nu jeg har en tbl med ex. 3 rækker (Id, antal), og laver en
> select på at få udtrukket række ID 2, hvordan formulerer jeg så, at
> jeg ønsker at få af vide hvad nummer i forhold til "antal" at rækken
> er:
>
> ID Antal
> 1 5
> 2 7
> 3 3
>
> Så jeg response.writer
>
> "ID 2 er placeret som nummer 1"
Som jeg forstår det vil du have det pågældende rækkes "placering" på en
liste sorteret efter antal, hvis dette er korrekt kan du gøre sådan her:
SELECT COUNT(Antal) FROM <tabel> WHERE Antal > (SELECT Antal FROM <tabel)
WHERE Id = 2)
--
Jakob Andersen
| |
Jacob Læssøe Nielsen (20-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 20-04-04 22:32 |
|
> Som jeg forstår det vil du have det pågældende rækkes "placering" på en
> liste sorteret efter antal, hvis dette er korrekt kan du gøre sådan her:
Nej ID'ets numemrplacering i forhold til alle andre rækker.
Sådan lidt alla "Dit antal var x - det placerer dig som nummer y ud af alle
besvarelser"
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jakob Andersen (20-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 20-04-04 22:45 |
|
Jacob Læssøe Nielsen wrote:
> Nej ID'ets numemrplacering i forhold til alle andre rækker.
>
> Sådan lidt alla "Dit antal var x - det placerer dig som nummer y ud
> af alle besvarelser"
Du vil finde ud af hvor mange rækker der har et større antal end posten med
et specifikt ID? Det er også det den kode jeg har sendt gør, men du har ikke
fortalt hvilken DB du bruger så det er ikke sikkert at det vil virke.
--
Jakob Andersen
| |
Jacob Læssøe Nielsen (20-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 20-04-04 22:46 |
|
> Du vil finde ud af hvor mange rækker der har et større antal end posten
med
> et specifikt ID? Det er også det den kode jeg har sendt gør, men du har
ikke
> fortalt hvilken DB du bruger så det er ikke sikkert at det vil virke.
Jeg bruger Access.
Jeg er egentlig ikke interesseret i at vide hvor mange rækker der har et
større Antal.
Lad os sige at jeg forespørger på ID2 på følgende tabel:
ID Antal
1 4
2 5
3 1
"Du har 5 i antal det er det højeste Antal så du er nummer 1"
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jakob Andersen (20-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 20-04-04 23:42 |
|
Jacob Læssøe Nielsen wrote:
> Lad os sige at jeg forespørger på ID2 på følgende tabel:
>
> ID Antal
> 1 4
> 2 5
> 3 1
>
> "Du har 5 i antal det er det højeste Antal så du er nummer 1"
Okay, lad os prøve at gøre subselecten fra min forespørgsel først:
SELECT Antal FROM <tabel>WHERE Id = 2
Er vi enige om at dette vil returnere 5, dette sætter vi ind i resten af min
forespørgsel:
SELECT COUNT(Antal) FROM <tabel> WHERE Antal > 5
Dette vil returnere 0 da fem er det højeste antal, ergo er man den første på
listen det eneste du skal gøre er at ligge en til så har du dit nummer,
dette kan gøres sådan her:
SELECT COUNT(Antal) + 1 FROM <tabel> WHERE Antal > (SELECT Antal FROM
<tabel> WHERE Id = 2)
Prøv det lige af, enten har jeg misforstået dig totalt ellers også kan jeg
bare ikke formulere mig klart nok.
--
Jakob Andersen
| |
Jacob Læssøe Nielsen (21-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 21-04-04 22:11 |
|
> Prøv det lige af, enten har jeg misforstået dig totalt ellers også kan jeg
> bare ikke formulere mig klart nok.
OK - jeg tror at de sene timer i går satte blår i øjnene på mig - jeg
registrerede ikke lige subselecten.
Din løsning er (tildels), den jeg søger *men* hvis nu man ikke er nummer 1
får man jo ikke afvide hvad nummer man *så* er ? Man får bare afvide at man
ikke har 5 i antal so er det højeste Antal. Kan du følge mig.
Jeg vil straks tage dit forslag i brug - hvis du kommer på hvordan jeg kan
udregne hvad nummer man blev (hvis det ikke lige var nummer 1), så giv mig
et praj.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jakob Andersen (21-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 21-04-04 23:40 |
|
Jacob Læssøe Nielsen wrote:
> OK - jeg tror at de sene timer i går satte blår i øjnene på mig - jeg
> registrerede ikke lige subselecten.
>
> Din løsning er (tildels), den jeg søger *men* hvis nu man ikke er
> nummer 1 får man jo ikke afvide hvad nummer man *så* er ? Man får
> bare afvide at man ikke har 5 i antal so er det højeste Antal. Kan du
> følge mig.
Jeg kan stadig ikke følge dig ligegyldig om man er nummer 1 eller ej vil det
virke, der bliver talt antallet af poster hvori antallet er større end i den
man specificerer ID nummeret på..
Hvis du vil kan jeg prøve at konstruere et eksempel hvor du taster et tal
ind og ser din placering.
--
Jakob Andersen
| |
Jacob Læssøe Nielsen (22-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 22-04-04 21:08 |
|
> Jeg kan stadig ikke følge dig ligegyldig om man er nummer 1 eller ej vil
det
> virke, der bliver talt antallet af poster hvori antallet er større end i
den
> man specificerer ID nummeret på..
Jeg takker for din tålmodighed, standhaftighed og din overbærenhed!
Nu faldt 5-øren! Det virker som jeg vil have det - jeg skulle bare skrive
rigtigt i SQL'en - havde placeret et ) forkert som gjorde, at den
returnerede 0 hele tiden.
Tak for det!
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09-04-2004
| |
Jakob Andersen (23-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 23-04-04 01:25 |
|
Jacob Læssøe Nielsen wrote:
> Jeg takker for din tålmodighed, standhaftighed og din overbærenhed!
Det var da dejligt at få bekræftet at jeg havde ret, jeg begyndte selv at
komme helt i tvivl
--
Jakob Andersen
| |
Jacob Læssøe Nielsen (25-04-2004)
| Kommentar Fra : Jacob Læssøe Nielsen |
Dato : 25-04-04 09:36 |
|
> Det var da dejligt at få bekræftet at jeg havde ret, jeg begyndte selv at
> komme helt i tvivl
OK - Hvis jeg nu ønsker at der skal sorteres efter *to* parametre Antal1 og
Antal 2 bliver det hele lidt mere kompliceret? Kan du hjælpe mig med den?
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system ( http://www.grisoft.com).
Version: 6.0.667 / Virus Database: 429 - Release Date: 23-04-2004
| |
Jakob Andersen (25-04-2004)
| Kommentar Fra : Jakob Andersen |
Dato : 25-04-04 18:10 |
|
Jacob Læssøe Nielsen wrote:
> OK - Hvis jeg nu ønsker at der skal sorteres efter *to* parametre
> Antal1 og Antal 2 bliver det hele lidt mere kompliceret? Kan du
> hjælpe mig med den?
Jeg er ikke helt med på hvad du mener med "sorteres"
--
Jakob Andersen
| |
Jacob .. (26-04-2004)
| Kommentar Fra : Jacob .. |
Dato : 26-04-04 11:26 |
|
> Jeg er ikke helt med på hvad du mener med "sorteres"
Som dit eksempel er, nu tæller den alle hvor feltet Antal er mindre
end det *nye* Antal. Og returnere hvilken plads man har. Men hvis jeg
nu ønkser at vide min placering i forhold til feltet Antal *og* feltet
Antal2
ID Antal Antal2
1 7 5
2 7 3
3 7 6
Så ID 1 er nummer 2
Så ID 2 er nummer 3
Og ID 3 er nummer 1
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
|
|