Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom kiválasztani a...

Hogyan tudom kiválasztani a 10 legnagyobb számot egy adatbázisból, ha több azonos értékű szám van?

Figyelt kérdés
Adott egy tippverseny (foci eb), ahol a felhasználóknak - főleg így az elején - azonos pontjaik vannak, és szeretném azokat a pontszámokat kiolvasni a MySQL adatbázisból, ami a 10 legnagyobb. Beleértve azt is, hogy a 10 legnagyobb pontszámot - mondjuk - ha 12-en érték el, akkor mint a 12-en megjelenjenek egy TOP 10 táblázatban.

2024. jún. 15. 09:31
 1/9 anonim ***** válasza:
39%
A TOP az Accessben van, így egyszerűbb lenne, de a MySQL ezt nem tudja. Kérdés, hogy direktben SQL felületen akarod csinálni, vagy programnyelven. Utóbbi esetben szerintem egyszerűbb egy félkész lekérdezést gyártani, és az eredményeket programnyelven feldolgozni.
2024. jún. 15. 10:00
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
48%
Distinctelve, csökkenő sorrendben lekérdezed az első 10 számot, majd innerjoinolod a táblával.
2024. jún. 15. 11:43
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
66%
#2, ez nem oldja meg azt a problémát, ha a 4 legnagyobb számhoz 8 tipp tartozik, az 5 legnagyobbhoz meg 12, és ott kéne megállni. Ha jól értem a kérdezőt.
2024. jún. 15. 12:02
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

Köszönöm az eddigi válaszokat.

#1 Egy egyszerű weboldalt programoztam le php alapon (csak sima mvc minta, semmi nagy keretrendszer) és MySQL van mellérendelve.

#2 ezt sajnos, nem értem. A LIMIT 10-et tudom alkalmazni, de az most ide nem elég.

#3 Igen, valószínűleg jól értesz. Ha mondjuk az első 10 legtöbb pontot elért tippelő 10. helyezettje X ponton áll, akkor az elvileg azonos X pontszámot elért 11. esetleg 12. helyezett se maradjon le a listáról.

Lehet, hogy ezt külön le kell programozzam, ha nincs utasítás rá. Mondjuk veszem az első 20 legtöbb pontot és a kilencedik helyezett után addig írom a helyezéseket, amíg azonos következő pontszámok vannak.

2024. jún. 15. 13:19
 5/9 anonim ***** válasza:
66%
Akkor csak simán fogod az első 9 usert és nyomsz egy uniot azokkal, akiknek megegyezik a pontszáma a 10.-el, majd ugyanúgy distinct, hogy kiszűrd az ismétlődő rekordokat.
2024. jún. 15. 15:08
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
66%
Vagy egyszerűbb, ha megkeresed a 10. usert es megnézed kinek nagyobb vagy egyenlő a pontszáma.
2024. jún. 15. 15:12
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

Köszönöm! Ez utóbbi sikerült. Ez lett a TOP 10 lekérdezése: SELECT username, points FROM users WHERE points >= (SELECT points FROM users ORDER BY points DESC LIMIT 9, 1) ORDER BY points DESC

Feltétele, hogy legyen legalább egyel több felhasználó, mint a LIMIT értéke, ellenkező esetben üres marad a tábla.

2024. jún. 15. 15:59
 8/9 anonim ***** válasza:
69%
Nekem is a 2 selectes megoldás jutott csak eszembe, de én nem vagyok MySQL expert.
2024. jún. 15. 16:58
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
69%
Ha coalescebe beágyazod a beágyazott lekérdezést és adsz egy olyan helyettesítő értéket, aminél biztos az összes pontszám nagyobb, akkor kevesebb userrel is működni fog.
2024. jún. 15. 17:04
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!