» »

Pomoč pri SQL

Pomoč pri SQL

nokaut240 ::

SELECT AVG(t.stevilo) AS povprecje FROM(SELECT a.aid, COUNT(i.pid) AS stevilo FROM aliansa a, igralec i WHERE a.aid=i.aid GROUP BY a.aid) t


Notranji SELECT stavek mi prešteje število pid-ov (count(i.pid)) ki pripadajo določeni aliansi(a.aid) in jih grupira. Dobimo id alianse in število pidov, ki tej aliansam pripadajo. Zunanji select stavek izračuna povprečno število pidov na alianso. Zdaj bi pa rad, da izpiše samo id-je tistih alians (a.aid oz. t.aid), ki imajo število pidov (t.stevilo) večje kot je povprečje. Probavam in probavam, pa mi program vedno zateži, da narobe grupiram in podobno. Če lahko kdo dopolne to kodo, naj mi jo kar pošlje preko ZS (zaradi "varnostnih" razlogov :D ).

Andre ::

PB 3e delaš to? :)

nokaut240 ::

Andre, ja :)

gokky ::

Grupiraj zunanji SQL po t.aid in uporabi HAVING.

nokaut240 ::

Pospešite izvajanje počasnih poizvedb s kreiranjem ustreznih indeksov (CREATE
INDEX). Svoje predloge dokumentirajte s faktorji pohitritve in jih utemeljite.

Tole mi ni jasno kako naredit, ker nisem še nikoli počel kaj takega. Lahko kdo vsaj en primer napiše, če imamo te tabele:

pleme(tid, tribe)
aliansa(aid, alliance)
igralec(pid, player, #tid, #aid)
naselje(id, x, y, vid, village, population, #pid)

gokky ::

Primarni ključi so v splošnem prvi kandidat za indeksiranje. Zunanji ključi so naslednji (lahko tudi v kombinaciji). Za pohitritev gornjega stavka pa indeks nad aliansa(aid) (PK) in igralec(aid) (FK).

Ni pa vedno nujno, da je indeks bolj optimalen. Recimo, da imaš v stolpcu X ene tabele naslednje vrednosti: 1E6 krat po 'a' in 10 krat 'b'. Potem pomeni indeks, ko iščeš vrednost po where x='a' samo dodaten praktično neuporaben korak. Cost-based optimizerji se znajo termu izogniti, na rule-based pa mora DBA/razvojnik misliti.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Podatkovne baze relacijska algebra - problem

Oddelek: Programiranje
5929 (835) techfreak :)
»

[Sql] Vprasnji

Oddelek: Programiranje
8790 (686) Tody
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
153214 (2979) overlord_tm
»

problem v C#

Oddelek: Programiranje
211969 (1684) dvojka
»

[MySql] obratno od DISTINCT

Oddelek: Programiranje
101450 (1268) frudi

Več podobnih tem