Zadejte hledaný výraz...

Pomoc s mysql selectom

Ahojte potreboval by som pomôct s jedným DB selectom. Možno to niekoho z vás napadne rýchlejšie ako mňa.
Mám 2 tabulky:
TEXTY (ID, TEXT)
HODNOCENI (ID, ID_TEXTU,ZNAMKA) //k jedému id textu je samozrejme viac hodnoteni takze na zoradenie treba spraviť priemer znamok
a potreboval by som vypísať texty podľa obľúbenosti. Ďakujem za každú radu:)
Lukáš
30. 8. 2011 16:13:58
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672176
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 16:21:14
SELECT * FROM texty ORDER BY (SELECT AVG(znamka) FROM hodnoceni WHERE id_textu=texty.id GROUP BY id_textu) DESC LIMIT 10
ale je to vykonostne vselijake, ja bych to resil predpocitanym prumerem primo v tabulce textu :) bude to znat hlavne v dobe kdy bude velka spousta textu v db a velka spousta hodnoceni :)
30. 8. 2011 16:21:14
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672175
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 16:33:03
Napsal Aleš Jiříček;695638
SELECT FROm texty ORDER BY (SELECT AVG(znamka) FROM hodnoceni WHERE id_textu=texty.id GROUP BY id_textu) DESC LIMIT 10
ale je to vykonostne vselijake, ja bych to resil predpocitanym prumerem primo v tabulce textu :) bude to znat hlavne v dobe kdy bude velka spousta textu v db a velka spousta hodnoceni :)
akorat Ti tam chybi nejakej join :-D ale obecne je to spravne ;-)
30. 8. 2011 16:33:03
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672174
Ďakujem pekne za pomoc, s tým prepočítavaním asi máte pravdu, pravdepodobne to tak urobím.
30. 8. 2011 16:33:13
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672173
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 16:33:38
Napsal NSBM;695643
akorat Ti tam chybi nejakej join :-D ale obecne je to spravne ;-)
proc? nevis co je to subquery ? JOIN je v tomhle pripade k nicemu, i kdybych chtel vybrat hodnotu AVG hodnoceni tak pouziju subquery
30. 8. 2011 16:33:38
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672172
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 16:41:00
Napsal Aleš Jiříček;695645
proc? nevis co je to subquery ? JOIN je v tomhle pripade k nicemu, i kdybych chtel vybrat hodnotu AVG hodnoceni tak pouziju subquery
to nevim :-) nikdy v zivote jsem to nepouzival .. je to rychlejsi nez joiny?
30. 8. 2011 16:41:00
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672171
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 16:43:49
Napsal NSBM;695652
to nevim :-) nikdy v zivote jsem to nepouzival .. je to rychlejsi nez joiny?
ne, pouziva se to v jinych pripadech, zkus mi tohle napsat pres joiny (teoreticky to pujde - ale otazka je jestli jednoduseji a vykonostne vyhodeji) ;)
30. 8. 2011 16:43:49
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672170
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 16:45:40
v jakych napriklad? docela me to zajima.. pracuju jako DB specialista a toto jsem nikdy nepouzival :-) (nemel jsem nikdy potrebu to pouzit)
------
EDIT1:
orientacne takto... jsem v praci tak nemam cas to zkouset
SELECT t.id, t.text, AVG(h.znamka)
FROM texty t
LEFT JOIN hodnoceni h
ON h.text_id = t.id_textu
GROUP BY t.id, t.text
ORDER BY 3 DESC
---------
EDIT2: otazka zni, je rychlejsi join nebo subquery? ted jsem to resil s kolegou (senior Oracle DB specialist) a rikal ze rychlejsi je rozhodne JOIN (az na male vyjimky) ... protoze subquery iteruje vsechny radky a nepouziva INDEXy, coz je neskutecna vyhoda JOINu.. zalezi asi taky na velikosti db.. v male DB ten rozdil nebude az tak rapidni.. ale vzhledem k tomu, ze ja pracuji s miliony radku, tak kdyz jsem se rozhodoval co pouzivat, JOIN pro me byla jasna volba :-)
30. 8. 2011 16:45:40
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672169
join
30. 8. 2011 16:53:06
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672168
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 16:55:05
otestoval jsem to na vetsi databazi a dotazy jsou vykonostne velmi podobne, oba stoji ale za starou belu, predpocitany indexovany sloupec bude stokrat lepsi reseni (desetiny sekundy x jednotky milisekund)
30. 8. 2011 16:55:05
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672167
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 16:56:18
Napsal Aleš Jiříček;695664
otestoval jsem to na vetsi databazi a dotazy jsou vykonostne velmi podobne, oba stoji ale za starou belu, predpocitany indexovany sloupec bude stokrat lepsi reseni (desetiny sekundy x jednotky milisekund)
tak to je jasny ze predpocitanej sloupec s indexem bude rychlejsi :-D
30. 8. 2011 16:56:18
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672166
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 16:57:32
jj jen jsem chtel rict ze join nic navic oproti subquery nepridal takze neni na 100% duvod ho preferovat (pouzivam oboji v ruznych situacich podle uvazeni)
kazdopadne uz jsem to rikal v prvnim prispevku, tenhle dotaz nelze doporucit v jakekoliv forme, jednou db naroste a stranka zacne padat kvuli ucpani databaze, ja to jeste testoval na nevytizenem serveru, ale verim ze na serveru s vytizenim by ten dotaz byl jeste mnohem horsi
30. 8. 2011 16:57:32
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672165
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 16:59:44
Ales: tak na vetsich projektech je myslim si indexace a prepocitavani samozrejmosti :-) ja volim (preferuji) JOIN z toho duvodu, ze mi prijde zapis o dost prehlednejsi a cistsi .. nedavno jsem videl starou formu zapisu JOINu a malem jsem se poblil :-D
30. 8. 2011 16:59:44
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672164
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 17:02:12
jj ja tu subquery rozhodne obhajovat nebudu, bylo to prvni co me napadlo, protoze mi to prislo jendodussi :)
ale jinak joinuji jak zbesilej, mam tu i projekty kde se prakticky porad joinuje 6,7 tabulke v jedinem dotazu (a pretso jsou dotazy maximalne optimalizovane a probihaji v milisekundach) a nedokazu si predstavit jak jinjak bych ty veci resil, to bych zrejme nemel ani nahodou na jediny dotaz :)
30. 8. 2011 17:02:12
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672163
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 17:03:32
jen 6? :-D hehe.. jen si delam srandu... proti gustu zadny disputat ;-) hlavne ze jsme si to vysvetlili :-) ja join(t)uju furt a jsem spokojenej :-D zatim jsem vyresil vzdycky vse ;-)
---
EDIT1: prave ted ladim select kterej poji 10 tabulek a jeste saha do historickych dat. kde jsou miliony radku.. tak to uz ty milisekundy presahuje (radove nekolik minut) :-D ... proto mam rad delat weby, protoze tam mam vetsinou tak 10-15 tabulek a pohoda :-D ty stovky co mam v praci je silenost :-D
30. 8. 2011 17:03:32
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/#reply672162
Pro odpověď se přihlašte.
Přihlásit