Avaleht
uus teema   vasta Tarkvara »  WWW »  Vaja abi mysql-päringuga märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
poroloon
HV kasutaja
poroloon

liitunud: 25.07.2010




sõnum 08.09.2013 13:21:51 Vaja abi mysql-päringuga vasta tsitaadiga

Soovin teha lihtsa edetabeli, aga ei suuda päringut õigeks saada.

Hetkel on mul nii:

SELECT * FROM (SELECT * FROM table ORDER BY id DESC) AS table1 GROUP BY user_id ORDER BY id DESC

ja soovin tulemuseks saada nimekirja, kus kõige üleval on sissekanded, mida on enim lisanud mingi kasutaja (user_id) ja kahanevas järjestuses.
Näiteks user_id 1234 on lisanud 5 sissekannet ja 2345 on lisanud 3 sissekannet, siis soovin, et kuvataks 1234 lisatud viimane sissekanne kohe ülal, selle järel siis 2345 oma. Kui 2345 lisab veel 3 sissekannet, siis tema viimane sissekanne jõuaks 1234 sissekandest ettepoole -- antud juhul siis esimeseks.

Selgituseks veel, et kuigi mitu kasutajat võivad lisada mitu sissekannet, siis edetabelis peaks näha olema vaid üks viimane sissekanne vastava user_id kohta, aga järjestus peaks toimuma vastava user_id loodud sissekannete arvu järgi.


Sissekannete hulk | sisu | autor

(6) Porgandid - lisas 2345
(5) Kaalikad - lisas 1234
(2) Kartulid - lisas 6543
(1) Peet - lisas 8765
(1) Kurk - lisas 9876
(1) Tomat - lisas 7788

jne.


Või kui sellest ülal tolku ei saa, siis teine võimalus, mida on noobi jaoks arusaadavam teha, et sissekannete tabelisse luua lisaväli, mida iga kord lihtsalt uuendatakse, kui sama ID lisab uue sissekande. (ja vähendatakse, kui ta kustutab sissekandeid).
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 08.09.2013 14:29:04 vasta tsitaadiga

sql:
  1. SELECT user_id, count(*) AS count FROM TABLE GROUP BY user_id ORDER BY count DESC

või kui aliasega ei tööta siis
sql:
  1. SELECT user_id, count(*) AS count FROM TABLE GROUP BY user_id ORDER BY count(*) DESC

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
poroloon
HV kasutaja
poroloon

liitunud: 25.07.2010




sõnum 09.09.2013 10:49:44 vasta tsitaadiga

See päring tundub töötavat ("AS count" asemele pidin panema näiteks "AS counts"), aga kuidagi väga aeglaselt laeb tulemused ette. Alguses 2 esimest, siis on 1-2 sek vahet, kuni tuleb 3. ja siis 1 sek hiljem tulevad ülejäänud (kuni 10 ühel lehel). Index oli juba user_id peal olemas.
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 09.09.2013 11:02:33 vasta tsitaadiga

See tundub juba seotud olema HTTP ühendusega mis ei ole päringuga nüüd küll kuidagi seotud. Päringule tuleb serveri poolelt vastus ikka ühe korraga mitte jupi kaupa. Vaata mis datat sa brauserisse saadad j amida muu kood seal teeb.
_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Vaja abi mysql-päringuga
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.