Avaleht
uus teema   vasta Tarkvara »  WWW »  Keeruline mysql päring 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:  
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 30.01.2009 22:29:37 Keeruline mysql päring vasta tsitaadiga

Mõnele võibolla tekitab järgnev ebameeldivaid reaktsioone, aga ehk ikka saan abi ka. icon_biggrin.gif
Nimelt teema selles, et minult telliti selline töö, et teha korda ühe rate-klooni edetabel. Teadagi need kuvavad pilte "ORDER BY hinne DESC" ja kogu moos. Aga asja probleem seisneb selles, et seal kuvatakse kõik pildid, siis võib olla edetabelis mingi kasutaja lausa 5 pildiga! Õige oleks nii, et iga inimene pääseb automaatselt edetabelisse vaid selle ühe pildiga, millel on kõrgeim skoor (lisaks muud parameetrid, mis praegu pole olulised). Kui tema mõne teise pildi skoor ületab eelmise oma, siis automaatselt vahetuks edetabelisse uus pilt, mitte ei läheks vanale lisaks. Maketiks anti mulle üks jabur päring (txt-failis), millest ma midagi aru ei saa praegu. icon_rolleyes.gif
Enda tehtud lehtedel pole ma pidanud seda edetabeli korrektset olekut (ajukärsatamist) oluliseks, kuna ei fänna edetabeleid. icon_biggrin.gif

Seal, kus asi korda vaja teha, on hetkel päring selline: "SELECT * FROM photo WHERE ...blaa... ORDER BY score DESC", tabelis on kasutaja ID - "userid" ja just see peabki iga pildi puhul unikaalne olema, et see iial ei korduks edetabelis. On seda võimalik kuidagi teha?
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
airm
HV Guru

liitunud: 26.02.2003




sõnum 30.01.2009 22:46:52 vasta tsitaadiga

group by on märksõna
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 30.01.2009 22:56:26 vasta tsitaadiga

airm kirjutas:
group by on märksõna

Juba läbiproovitud asi, ma sellega sain midagi eriti segast kuvama sinna. Põhiline, et megavalesti. :S
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
tomps01
HV vaatleja

liitunud: 09.06.2004




sõnum 30.01.2009 23:26:34 vasta tsitaadiga

SGM kirjutas:
airm kirjutas:
group by on märksõna

Juba läbiproovitud asi, ma sellega sain midagi eriti segast kuvama sinna. Põhiline, et megavalesti. :S

http://dev.mysql.com/doc/refman/5.1/en/select.html on vist kaks sobivat group by kasutusviisi kirjas:
tsitaat:

Posted by Callum Macdonald on June 27 2005 6:54pm [Delete] [Edit]

If you want to use ORDER BY before GROUP BY, the only way I've found to achieve it is with a subquery.

For example, if you want to get a list of users from a table UserActions sorted according to the most recent action (based on a field called Time) the query would be:

SELECT * FROM (SELECT * FROM UserActions ORDER BY Time DESC) AS Actions GROUP BY UserID ORDER BY Time DESC;

Without the subquery, the group is performed first, and so the first record that appears in the database (which is not necessarily in the order you want) will be used to determine the sort order. This caused me huge problems as my data was in a jumbled order within the table.

--Edit--
This same result can be achieved with the use of MAX(Time), so the query would be:

SELECT *, MAX(Time) AS LatestAction GROUP BY UserID ORDER BY LatestAction DESC;

As far as I can see, the subquery model still holds up if you need more complex sorting before performing the GROUP.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 31.01.2009 12:34:56 vasta tsitaadiga

subquery ajabki mul juhtme suitsema. Kusjuures sain asja toimima isegi, tänu eelmise postitaja tsiteeritud näitele! thumbs_up.gif Aga nüüd oleks vaja lisada sinna päringusse LEFT JOIN ja teine tabel. Siis millegipärast tuleb error, et "duplicate column: ID" vms. icon_rolleyes.gif
On vaja seal 2 tabelit kokku liita, et välja filtreerida blokeeritud kasutajad. Ei saa ma aru, kuidas seda teha subquery-ga päringus.
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 31.01.2009 12:40:41 vasta tsitaadiga

SELECT tabel.tulp AS nimi, tabel2.tulp AS nimi2
Ehk siis ära kasuta *'i
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 31.01.2009 13:18:54 vasta tsitaadiga

Kas ma pean siis need JOIN-id ja tabelinimed panema välja või subquerisse? Või mõlemasse JOIN panema?

EDIT:

Ei pannud välja, panin vaid subquery sisse, aga väljapoole panin tulpade nimed ka kõik ükshaaval. Sain vist tööle lõpuks, nagu vaja. icon_smile.gif Tänud aitajatele! thumbs_up.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Absona
Lõuapoolik
Lõuapoolik

liitunud: 17.09.2008




sõnum 01.02.2009 10:07:38 vasta tsitaadiga

http://www.w3schools.com/sql/default.asp
_________________
Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid.
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Keeruline mysql päring
[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.