[ Miloš Baić @ 28.11.2007. 09:43 ] @
Pozdrav,

nisam vičan, nešto previše sa Access - om, tj. ne poznajem u potpunosti njegove mogućnosti.

Odradio sam jedan Query koji daje rezultat ali kad pokušam snimiti ga, jednostavno Access pukne. Primetio sam, kad napišem neku upit i snimim ga, da Access preformuliše taj sql ukoliko možda postoji "elegantnije rešenje", te pomislih da ne puca zbog toga jer ne razume kako ovaj moj upit da preformuliše!?!

Naime, imamo tabelu "PRAVNA" lica, "ZAGLAVLJE" računa, tabelu "ZBIRNO" po računu, i da skratim priču, tabelu "UPLATE". U tabeli "PRAVNA" se evidentiraju pravna lica, u "ZAGLAVLJE" zaglavlje računa, "ZBIRNO", ukupna suma po računu, a u "UPLATE", koliko je uplaćeno po računu. Query koji sam pravio se odnosi na prikaz ukupne svote po računu i ukupno uplaćeno po računu.
Code:

select ul.br_dok,
         ul.kupac,
         ul.naziv,
         ul.vrednost,
         up.uplaceno
from
 (select zg.br_dok,
         zg.kupac,
          p.naziv, 
         zb.vrednost
         
  from 
   -- spajanje zaglavlja računa sa ukupnom sumom po računu
   (zaglavlje as zg inner join zbirno as zb on 
       (zg.dok = zb.dok) and (zg.br_dok = zb.br_dok))

   -- spajanje sa pravnim licima radi dobijanja naziva
    inner join pravna as p on p.id = zg.kupac

   -- R predstavlja racune jer postoje i predracuni koji su definisani kao P
  where zg.dok = 'R') as ul

  -- spajanje sa uplatama 
  inner join (select br_dok,
                     sum(uplata) as uplaceno
                from uplate
                group by br_dok) AS up on up.br_dok = ul.br_dok;

Moja ideja je bila da se pokupi broj dokumenta, naziv kupca i vrednost po računu, pa da se to spoji sa sumom uplata iz tabele gde se unose uplate, preko broja računa. To mi je delovalo kao najednostavnije, pošto samu bazu nisam ja postavljao. Al, Access daje izlaz upita i to korektan, al puca pri snimanju!?!

Hvala unapred.
[ goranvuc @ 28.11.2007. 10:29 ] @
Primedbe:
1. Ispravio sam tvoj SQL tako sto sam kljucne reci napisao velikim slovima zbog citlljivosti (sto i tebi preporucujem)
Code:

SELECT ul.br_dok, ul.kupac, ul.naziv, ul.vrednost, up.uplaceno
FROM
(SELECT zg.br_dok, zg.kupac, p.naziv, zb.vrednost FROM  
    (zaglavlje AS zg INNER JOIN zbirno AS zb ON (zg.dok = zb.dok) AND (zg.br_dok = zb.br_dok))
    INNER JOIN pravna AS p ON p.id = zg.kupac
    WHERE zg.dok = 'R') AS ul
INNER JOIN 
(SELECT br_dok, SUM(uplata) AS uplaceno FROM uplate GROUP BY br_dok) AS up ON up.br_dok = ul.br_dok

2.Kada sam to uradio, prekontrolisao sam ispravnost SQL-a i ne vidim nista lose, osim sto prilikom JOIN klauzule na levoj strani ON izkaza treba da ti se nalazi leva tabela iz JOIN iskaza koji formiras - cistije je!

npr. ti pises:
Code:

INNER JOIN pravna AS p ON p.id = zg.kupac

a ja ti kazem da bi trebalo:
Code:

INNER JOIN pravna AS p ON zg.kupac = p.id


Probaj to, jer ja ne mogu - trebao si da uploadujes bazu (moze i prazna) - olaksao bi nam posao.
[ Miloš Baić @ 28.11.2007. 14:37 ] @
Improvizovao sam jednu bazicu, gde se na mom računaru manifestuje problem koji sam gore naveo.
Upit za Query:
Code:

SELECT ul.br_dok, ul.kupac, ul.naziv,
             ul.vrednost, up.uplaceno
FROM
 (SELECT zg.br_dok, zg.kupac, p.naziv,  zb.vrednost
     FROM  (zaglavlje as zg INNER JOIN  zbirno as zb ON  zg.br_dok = zb.br_dok)
          INNER JOIN  pravna as p ON zg.kupac =  p.id_lica) as ul
  INNER JOIN 
    (SELECT br_dok, SUM(uplata) as uplaceno
      FROM uplate
      GROUP BY br_dok) AS up
        ON ul.br_dok = up.br_dok;

U principu, ne moram Query da snimim, rešio sam to iz koda, al bih voleo da znam da li je bug ili je upit problematičan!?!
[ goranvuc @ 28.11.2007. 14:54 ] @
Nesto je do tvoje instalacije, ja sam lepo snimio kod sebe
[ Getsbi @ 28.11.2007. 15:51 ] @
I kod mene radi korektno. Ako vam to nešto znači. Probaj da u Tools, Options, na General kartici čekiraš opciju Compact and Repair i onda zatvoriš i otvoriš ponovo .mdb. Ponekad se dešava da je baza prljava. Mada obzirom da je novo kreirana i malo rađena ?????
[ Miloš Baić @ 29.11.2007. 09:47 ] @
U redu, bitno mi je da nije bug. Moguće da moja verzija iz nekog razloga puca.
U svakom slučaju, hvala Vam puno.