Ensinnäkin anteeksi hieman huono otsikko, en vain osannut sitä paremmin muotoilla. Elikästä, minulla on tietokannassa tietoja tälläisessä muodossa
---------------------------------------- | id | artisti | kappale | soittomäärä | | 1 | matti | joki | 5 | | 2 | jari | unimaa | 8 | ----------------------------------------
Ja näitä onkin sitten heti pirusti, joten optimointi olisi hyväksi jo ihan kyselytasolla. Eli tarvitsisin kyselyn joka antaa minulle 10 eniten soitettua artistia. Eli ensinnäkin (My)SQL:n tulisi laskea yhteen artistien soittomäärät, ja sitten antaa niistä 10 eniten soitetuinta. Olen vasta tutustunut MySql:ään, peruskyselyt menevät lukemieni suomalaisten oppaiden perusteella, mutta tämä on jo liian monimutkainen omiin taitoihini.
Ja jos jollakulla on jokin hyvä ihmisläheinen opas tiedossa joka menisi vähän pidemmälle kuin OP:n ja Kuhan oppaat aiheesta niin linkkiä sopii pistää (vaikka olisikin Lontoon murteella).
En nyt ole varma mutta eikö tämä toimisi...
"SELECT * FROM taulu ORDER BY soittomäärä ASC LIMIT 10"
samlui, ei toimi, sillä se järjestää tulokset soittomäärän mukaan. Sen pitäisi järjestää se artistikohtaisen soittomäärän summan mukaan...
Tämä voisi toimia:
SELECT artisti, SUM(soittomaara) maara FROM laulut GROUP BY artisti ORDER BY maara DESC LIMIT 10
Siis GROUP BY ryhmittää tietyn kentän mukaan.
. SUM soittomaara as soittomaara FROM . GROUP BY artisti .
Jotain tuon suuntaista lähtisin itse kehittelemään. Ei ole mysliä asennettuna tällä koneella niin en pysty kokeilemaan.
Kiitos jälleen Antti, tuo toimii kuten pitääkin. Jotain tuollaista olin jo pyöritellyt pidemmän aikaa, mutta vielä on sen verran heikossa osaamisessa syntaksin muodostus etten oikeaan muotoon sitä saanut puettua.
Tommi Lahtosen SQL kirjaa suosittelen ISBN:951-846-092-2.
Tommi Lahtosen mainioita SQL materiaaleja löytyy myös netistä
Aihe on jo aika vanha, joten et voi enää vastata siihen.