• 10 odgovora
  • 3.334 pregleda
Visestruki join nad 3 tabele ??? 19.01.2006. u 09:11 · pre 252 meseci #1
tbl_aktivnost: id_aktivnosti,naziv_aktivnosti,planirana_sredstva
tbl_projekti: id_projekta,id_aktivnosti,odobrena_sredstva
tbl_placanja: id_placanja, id_projekta,uplata

Treba da izvrsim upit nad ove tri tabele kako bih dobio sledeci rezultat

naziv_aktivnosti | planirana_sredstva | odobreno | uplaceno


gde je :
odobreno - suma odobrenih sredstava za datu aktivnost
uplaceno - suma uplacenih sredstava na svim projektima koji pripadaju datoj kategoriji aktivnosti.

Koristio sam 2 join-a i guop by naziv_aktivnosti ali nikako da mi sabere sve sto hocu. Kad mi sumira odobreno onda nece uplate i obrnuto.
HELP!!!
Re: Visestruki join nad 3 tabele ??? 19.01.2006. u 09:29 · pre 252 meseci #2
Neće moći tek tako 2 joina + group by, jer će ti se odobreno sumirati više puta, za svako plaćanje. Najjednostavnije rešenje je sa podupitima. Da li ti verzija podržava podupite?
Re: Visestruki join nad 3 tabele ??? 19.01.2006. u 09:43 · pre 252 meseci #4
Prvi deo radi ovako
Code:

SELECT 

  AKTIVNOST.NAZIV_AKTIVNOSTI,
  AKTIVNOST.PLANIRANA_GODISNJA_SREDSTVA,
  AKTIVNOST.KVARTALNA_SREDSTVA,
  sum(PROJEKAT.ODOBRENA_SREDSTVA)


FROM
 PROJEKAT INNER JOIN
 AKTIVNOST ON PROJEKAT.`ID_AKTIVNOSTI`=AKTIVNOST.`ID_AKTIVNOSTI`


GROUP BY

  AKTIVNOST.NAZIV_AKTIVNOSTI

ali sumiranje uplate neceeee
Re: Visestruki join nad 3 tabele ??? 19.01.2006. u 10:06 · pre 252 meseci #5
Naravno da neće kad su grupisani svi idovi projekata.

Nema podupita na matorom MySQL. Može onda s nekolicinom upita.

Neka prvi alteruje tabelu projekata kolonom suma uplata po projektu. Drugi upit onda bez problema odradi trazeno. Treći upit može da dropne privremenu kolonu.
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Re: Visestruki join nad 3 tabele ??? 19.01.2006. u 10:26 · pre 252 meseci #6
Ili da uradi dva upita, jedan sa joinom samo na projekat (kao što je uradio u primeru), a drugi sa dva joina sa sumiranim uplatama, pa resultsetove spaja u kodu tamo gde mu treba...
Re: Visestruki join nad 3 tabele ??? 19.01.2006. u 10:40 · pre 252 meseci #8
Code:

SELECT naziv_aktivnosti, planirana_sredstva,
(SELECT SUM(odobrena_sredstva) FROM tbl_projekti WHERE id_aktivnosti = a.id_aktivnosti) odobreno,
(SELECT SUM(uplata) FROM tbl_placanja
INNER JOIN tbl_projekti ON tbl_placanja.id_projekta = tbl_projekti.id_projekta
WHERE id_aktivnosti = a.id_aktivnosti) uplate
FROM tbl_aktivnost a
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme