Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Pár SQL dotazů - pomozte prosím

Zdravím,
mám tento model databáze:
[http://img220.imageshack.us/img220/144/clipboard01a l4.png]

Zadaní příkladů je:

Příklad č. 3
Vypište si data z tabulky období. Na základě struktury těchto údajů vytvořte dotaz, který zobrazí sumy zaplacených záloh dle jednotlivých období odečtů.

Nato jsem vymyslel toto:

select obdobi_n, sum(castka) from klient,obdobi,meridlo,odecty,zalohy
where klient.id_klienta = zalohy.id_klienta and odecty.ID_OBD = obdobi.ID_OBD and klient.id_klienta = meridlo.id_klienta
and meridlo.ozn_meridla = odecty.ozn_meridla
group by obdobi_n 

Vrací toto:
[http://img80.imageshack.us/img80/1115/vysledekre2.p ng]
Což si myslím, že je blbost vzhledem k datům, která jsou v tabulce záloh (viz. níže)

S dalšími dvěmi si vůbec nevím rady...:-/

Příklad č. 4,.
Vypiš zákazníky, kteří měli odběr energie za období 01/2004 – 01/2005 vetší než průměrný.

Příklad č. 5
Vyúčtuj všechny klienty za období plateb 01/2004 – 01/2005. Zjisti jejich nedoplatky nebo naopak přeplatky

Ještě přikladám jak vypadá tabulka obdobi a tabulka záloh:
[http://img223.imageshack.us/img223/3829/obdobiia6.p ng][http://img215.imageshack.us/img215/575/zalohyag0.pn g]

Databáze je Oracle. Pomůže někdo?
Díky!:beer:
MaSo

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
SELECT DOTAZ2.KLIENT, DOTAZ2.ODBER, DOTAZ1.PRUMER FROM (select KLIENT.NAZEV_KL as KLIENT, SUM(ODECTY…
Příklad 4 - dotaz 29.04.2007 04:02
Příklad 4 - dotaz
Díky moc! :beer:
MaSo 29.04.2007 10:58
MaSo
Neni zac. Priklad c. 5 je podobny (musis udelat par vnorenych dotazu). Jednotlivymi dotazy potrebuje…
wrtrcz 29.04.2007 11:17
wrtrcz
Ok, zkusím to sám. Struktura je zadaná školou...:-) nový
MaSo 29.04.2007 11:19
MaSo
Tak ve skole vyridid, ze jenom prase narve do jednoho textovyho pole dve DATE polozky :) nový
wrtrcz 29.04.2007 11:20
wrtrcz
Ok, ale až po zkoušce. :-) poslední
MaSo 29.04.2007 11:30
MaSo
SELECT DOTAZ2.KLIENT, DOTAZ2.ODBER, DOTAZ1.PRUMER
FROM
(select	 KLIENT.NAZEV_KL as KLIENT,
         SUM(ODECTY.KON_STAV-ODECTY.POC_STAV) as ODBER
   from	 ODECTY, MERIDLO, KLIENT
  where  MERIDLO.ID_KLIENTA =KLIENT.ID_KLIENTA 
    and	 MERIDLO.OZN_MERIDLA =ODECTY.OZN_MERIDLA
   and ODECTY.ID_OBD = 1
   group by KLIENT.NAZEV_KL) DOTAZ2,
(select	 avg(ODECTY.KON_STAV-ODECTY.POC_STAV) as PRUMER 
   from	 ODECTY  WHERE ID_OBD = 1) DOTAZ1
where DOTAZ2.ODBER > DOTAZ1.PRUMER

Neni zac. Priklad c. 5 je podobny (musis udelat par vnorenych dotazu). Jednotlivymi dotazy potrebujes zjistit

1) ID klienta a kolik zaplatil v roce 2005
2) ID klienta (plus dalsi udaje ktere chces videt), cenu_kwh klienta [nasobit] kolik odebral v zadanem obdobi
3) sloucenim obou dostazu ziskas udaje klienta a udaje o preplatcich/nedoplatcich (to bude ta nasobena cena [minus]kolik zaplatil v roce 2005)

Princip je stejny, jako v predchozim pripade, jenom se pouziji jine tabulky. Kdyz to nezvladnes, tak se na to pak jeste podivam.

Btw ta struktura je tvoje nebo zadana (skolou?)? Je to misty malinko prasarna - typicky ta obdobi :)

Zpět do poradny Odpovědět na původní otázku Nahoru