Visa resultat från mysql

PHP

4 svar · 305 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Trådstart#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!

Medlem 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?

Medlem 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

Medlem 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 */

Medlem 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.

391 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
131 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)