Just nu i M3-nätverket
Gå till innehåll

Placering i ett recordset


ns

Rekommendera Poster

Kan man på ett enkelt sätt få fram placeringen av en visst post i ett urval av poster?

 

Säg att jag har en tabell med id, namn och kategori typ:

 

1 Kalle 2

2 Lisa 2

3 Pelle 1

4 Lasse 2

5 Anna 1

6 Olle 2

 

Sen vill jag ha ut vilken placering Lasse har av alla i kategori 2 sorterat efter id. Värdet jag vill ha ut är alltså i detta fallet 3 (Kalle är 1, Lisa är 2 och Lasse 3)

 

Nån som fattar?

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

menar du typ RecordNumber efter att du gjort en select?

 

 

---

vänligen

 

Andreas

 

[inlägget ändrat 2003-04-11 14:38:13 av AHard]

Länk till kommentar
Dela på andra webbplatser

Kristianstad

Jag tror att han menar ungefär:

[color="#ff0000"]<%[/color]
strsql=[color="#ff8C00"]"[/color]SELECT * FROM Tabell WHERE Kategori='2'[color="#ff8C00"]"[/color]
[color="#0000ff"]' sql execute[/color]
Nummer = 0
[color="#a0522d"]Do[/color] Until RS.EOF OR RS([color="#ff8C00"]"[/color]namn[color="#ff8C00"]"[/color])=[color="#ff8C00"]"[/color]Lasse[color="#ff8C00"]"[/color]
Nummer = Nummer + 1
[color="#a0522d"]Loop[/color]
Response.Write [color="#ff8C00"]"[/color]Lasse har nummer [color="#ff8C00"]"[/color] & Nummer
[color="#ff0000"]%>[/color]

Fast det borde ju finnas något lättare sätt att göra det på - kanske direkt i sql?

/ Kristoffer

Windows kunde inte hitta något tangentbord. Tryck F1 för att försöka igen eller F2 för att avbryta.

 

[inlägget ändrat 2003-04-11 14:44:51 av Kristianstad]

Länk till kommentar
Dela på andra webbplatser

Ja kanske. Men då måste man väl plocka ut hela recordsetet och sen loopa fram till rätt post innan man får svaret?

 

Alltså ungefär som Kristianstad tipsar om. Det är det jag vill slippa och få in det direkt i SQL-satsen typ:

 

SELECT recordposition() FROM (SELECT * FROM tblPersoner WHERE kategori = 2 ORDER BY id ASC) WHERE id = 4

 

Tydligare? Jag vill alltså få fram positionen direkt i SQL-frågan och bara returnera ett värde till mitt recordset.

 

/Niklas

 

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Nedanstående funkar i MS SQL 2000 (behövs säkert göras om för MySQL/Access):

set nocount on
SELECT  IDENTITY(int, 1,1) as Ident, au_lname, au_fname, contract INTO #temp
FROM         pubs.dbo.authors
WHERE  Contract = 1

set nocount off
SELECT * from #temp

set nocount on
drop table #temp
set nocount off


 

Det borde dock finnas ett enklare sätt. Återkommer om jag hittar något.

 

Mvh

 

Jimmy

 

 

Länk till kommentar
Dela på andra webbplatser

Tackar, fast jag tror jag knäckte det precis. Busenkelt ju..

 

SELECT count(*) FROM tblPersoner WHERE id <= (SELECT id FROM tblPersoner WHERE namn = 'Lasse') AND kategori = 2 ORDER BY id ASC

 

Sen om man har id istället för namn från början blir det ju ännu lättare eftersom man slipper subselecten.

 

Ska testa och se om det var så enkelt.

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

Jaja, men då måste du köra om queryt för varje person. Jag trodde du ville ha ett query som satte recno på samtliga på en gång så att du lätt kunde få en placeringslista...

 

Då förstår jag bättre!

 

 

---

vänligen

 

Andreas

 

[inlägget ändrat 2003-04-11 15:57:08 av AHard]

Länk till kommentar
Dela på andra webbplatser

Sant, men det är inte så jag ska använda det utan det ska vara på en sida som sammanställer en persons olika placeringar vid olika tillfällen, så med en subselect får jag fram det som ett eget fält i mitt recordset.

 

Jag förklarade nog dåligt, men tack ändå för alla svar.

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...