Zadejte hledaný výraz...

Pomoc s mysql selectom

Ďakujem za včetky odpovede, neviete ešte náhodou čo tam mám doplniť aby to nebralo v úvahu texty, kt sú bez hodnotení, pretože pri týchto je priemer nula a keď to dám zoradiť ASC tak sú prvé práve tieto. Niečo ako keď je priemer vačší ako 0
30. 8. 2011 17:14:06
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672161
hm
verified
rating uzivatele
(20 hodnocení)
30. 8. 2011 17:19:06
Napsal NSBM;695675
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
jj mel jsem tu cest s par informacnimi systemy a tam je to silene :) ale zase aspon je to naka challenge, u webu jen malokdy ;)
---------- Příspěvek doplněn 30.08.2011 v 17:19 ----------
Napsal alucky;695679
Ďakujem za včetky odpovede, neviete ešte náhodou čo tam mám doplniť aby to nebralo v úvahu texty, kt sú bez hodnotení, pretože pri týchto je priemer nula a keď to dám zoradiť ASC tak sú prvé práve tieto. Niečo ako keď je priemer vačší ako 0
WHERE sloupec_s_avg > 0
30. 8. 2011 17:19:06
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672160
Petr
verified
rating uzivatele
(9 hodnocení)
30. 8. 2011 20:50:23
Napsal alucky;695679
Ďakujem za včetky odpovede, neviete ešte náhodou čo tam mám doplniť aby to nebralo v úvahu texty, kt sú bez hodnotení, pretože pri týchto je priemer nula a keď to dám zoradiť ASC tak sú prvé práve tieto. Niečo ako keď je priemer vačší ako 0
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
HAVING AVG(h.znamka) > 0
ORDER BY 3 DESC
30. 8. 2011 20:50:23
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672159
takatom
verified
rating uzivatele
(2 hodnocení)
31. 8. 2011 01:06:26
ještě lepší by bylo
SELECT t.id, t.text, AVG(h.znamka) FROM texty t, hodnoceni h
WHERE h.text_id = t.id GROUP BY t.id, t.text
ORDER BY 3 DESC
31. 8. 2011 01:06:26
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672158
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
31. 8. 2011 09:01:13
Napsal takatom;695889
ještě lepší by bylo
SELECT t.id, t.text, AVG(h.znamka) FROM texty t, hodnoceni h
WHERE h.text_id = t.id GROUP BY t.id, t.text
ORDER BY 3 DESC
nějak mi uniká v čem je to lepší, vždyť je to přepsání joinu do starého způsobu...
31. 8. 2011 09:01:13
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672157
Petr
verified
rating uzivatele
(9 hodnocení)
31. 8. 2011 09:45:43
Napsal Paradiso;695930
nějak mi uniká v čem je to lepší, vždyť je to přepsání joinu do starého způsobu...
nevsimej si ho :-D mele kraviny ;-)
31. 8. 2011 09:45:43
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672156
takatom
verified
rating uzivatele
(2 hodnocení)
31. 8. 2011 17:59:15
"Lepší" je to v tom, že se eliminuje nevhodně použitý LEFT JOIN, který si vynucuje klauzuli HAVING.
Je tam méně psaní a možná to "ušetří" mikrosekundu.
31. 8. 2011 17:59:15
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672155
hm
verified
rating uzivatele
(20 hodnocení)
31. 8. 2011 20:32:39
co jsi to rekl za blbost? having je tam kvuli tomu ze se filtruje podle agregacni funkce AVG() a ne kvuli left joinu :) ten tvuj dotaz by ani nefungoval jak je vyzadovano a ajk funguje spravne dotaz od NSBM
31. 8. 2011 20:32:39
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672154
takatom
verified
rating uzivatele
(2 hodnocení)
31. 8. 2011 23:08:52
Omyl, HAVING je tam proto, že musí eliminovat zbytečné záznamy vzniklé vinou LEFT JOIN (viz zadání alucky 16:13 s doplněním 17:14).
Zadání vyhovuje prostý JOIN stejně jako uvedený ekvivalent s WHERE. Všechny agregované záznamy pak mají AVG>0 a HAVING je zbytečný.
Funkčně však dávají oba dotazy totožný výsledek.
31. 8. 2011 23:08:52
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672153
hm
verified
rating uzivatele
(20 hodnocení)
1. 9. 2011 02:22:21
je to zajimave, protoze jsem si nemyslel ze to tak funguje (no dobre asi nejsem 100% databazar) ale zkusil jsem to a mas pravdu :) otazka je - je to rychlejsi ? (nemam ted cas to testovat)
edit: nakonec jsem to rychle hodil na jendu vetsi db a nemuzu potvrdit ze by v tech dotazech byl rozdil - tvuj dotaz 0,48 skeundy, dotaz s joiny 0,50 sekund (bohuzel ted nemam vetsi db na zatizenem serveru kde by to mohlo byt vic znat)
1. 9. 2011 02:22:21
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672152
Petr
verified
rating uzivatele
(9 hodnocení)
1. 9. 2011 09:50:11
inner join (join nebo totozne spojeni pres where) by byl vhodnejsi.. uznavam :-)
---------- Příspěvek doplněn 01.09.2011 v 09:52 ----------
Napsal Aleš Jiříček;696348
je to zajimave, protoze jsem si nemyslel ze to tak funguje (no dobre asi nejsem 100% databazar) ale zkusil jsem to a mas pravdu :) otazka je - je to rychlejsi ? (nemam ted cas to testovat)
edit: nakonec jsem to rychle hodil na jendu vetsi db a nemuzu potvrdit ze by v tech dotazech byl rozdil - tvuj dotaz 0,48 skeundy, dotaz s joiny 0,50 sekund (bohuzel ted nemam vetsi db na zatizenem serveru kde by to mohlo byt vic znat)
alesi inner join je urcite rychlejsi.. zalezi na strukture a logice databaze v jake je postavne.. obecne by melo platit jak pise takatom, ze by se mel pouzit inner join (ktery je nepatrne rychlejsi)
1. 9. 2011 09:50:11
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672151
ps906
verified
rating uzivatele
2. 9. 2011 16:31:59
SELECT t.id, t.text, AVG(h.znamka)
FROM hodnoceni h
LEFT JOIN texty t ON t.id_textu = h.text_id
GROUP BY t.id, t.text
ORDER BY 3 DESC
2. 9. 2011 16:31:59
https://webtrh.cz/diskuse/pomoc-s-mysql-selectom/strana/2#reply672150
Pro odpověď se přihlašte.
Přihlásit