webForumDet fria alternativet

Visa resultat från mysql

4 svar · 300 visningar · startad av UrMe

UrMeMedlem sedan apr. 2001762 inlägg
#1

Jag har en mysql databas som vi säger innehåller detta:
id och totalt
totalt är ett tal t.ex 34.
Problemet är att jag vill visa ett visst id t.ex 4 som har totalt=12.
Men jag vill även lista de 25 id:n som ligger precis ovanför id=4 och de 25 som ligger precis under och id=4 ska visas i mitten av dessa:
Så här:
-----------------------
id totalt
2 67
45 54
43 53
etc
etc
4 12
87 8
61 7
etc
etc
---------------------------------
Hoppas nån förstod min jobbiga förklaring :)
Tack på förhand!

------------------
You play by the rules, you die by the rules

[Redigerat av UrMe den 22 aug 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Hur då ovanför och under? Du måste ha något begrepp att sortera efter annars så är ovanför och under meningslöst. Har du en datum/tid kolumn med i tabellen?

------------------
essentitia preter non sans multiplicandum

UrMeMedlem sedan apr. 2001762 inlägg
#3

Nej.. ingen datum och tid.. utan jag vill visa vi säger 51 resultat beroende på en variabel $id som skickas med.. och sortera efter "totalt". Alltså den variabeln id som skickas med.. den saken från databasen ska visas i mitten.. sedan ta 25st som ligger precis ovanför och 25st som ligger precis under $id .. allt efter man sorterat efter "totalt" som finns i databasen.

Svårt att förklara .. hoppas det klarnar

------------------
You play by the rules, you die by the rules

LarsGMedlem sedan dec. 200012 464 inlägg
#4

jag förstår nu. Kommer dock inte på någon effektiv lösning.
Lite schematiskt beskrivet kan man göra så här

select total from t
where id = $id;

$total = total;

/* Hämta de 25 som ligger ovanför vår total */

select id,total from t
where total > $total
order by total
limit 25;

/* dessa kommer då i fel ordning
måste vändas innan utskrift */

/* skriv ut vårt värde */

echo $id . $total;

/* Hämta de 25 som ligger närmast under */

select id,total from t
where total < $total
order by total desc
limit 25;

/* Dessa kan skrivas ut direkt */

------------------
essentitia preter non sans multiplicandum

FlashXMedlem sedan nov. 19991 033 inlägg
#5

Du kan göra två select i samma fråga också.
Nu skrev du inte namnet på tabellen så jag kallar den tableName

SELECT t1.id AS id, t1.totalt, t2.id AS target FROM tableName AS t1, tableName t2 WHERE t2.id=$id HAVING t1.id > target -26 AND t1.id < target +26;

Du får 25 ovanför och 25 under men bara om id-numren följs stegvis i databasen. Har du raderat någon post mellan dem i sql-query'n, så finns ju inte den posten och då visas exempelvis bara 24 stycken istället.

138 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)