[ obradorriuss @ 20.12.2004. 10:23 ] @
Pozdrav ljudi radi se o sledecem:
Imam bazu iz koje treba da izvuchem neke podatke u report!
tabele: clanovi, zaduzenje knjigama, knjige
naime napravio sam queri koji bi trebao da mi prikaze koji je ucenik iznajmio najvise knjiga za odredjeni period i koja je knjiga najcitanija za odredjeni period!

moj queri za ucenika glasi ovako:
SELECT [Zaduzenje knjigama].[Datum uzimanja], Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje, Count([Zaduzenje knjigama].Invbroj) AS CountOfInvbroj
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
GROUP BY [Zaduzenje knjigama].[Datum uzimanja], Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje
HAVING ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))
ORDER BY Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje, Count([Zaduzenje knjigama].Invbroj);


a za najcitaniju knjigu glasi:
SELECT [Zaduzenje knjigama].[Datum uzimanja], [Unos knjiga].[Naslov dela], [Unos knjiga].Autor, Count([Unos knjiga].[Naslov dela]) AS [CountOfNaslov dela]
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
GROUP BY [Zaduzenje knjigama].[Datum uzimanja], [Unos knjiga].[Naslov dela], [Unos knjiga].Autor
HAVING ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))
ORDER BY [Unos knjiga].[Naslov dela], [Unos knjiga].Autor, Count([Unos knjiga].[Naslov dela]);



E sada mene muchi to shto klikom na otvaranje upita ili izvestaja meni ne sumira po naslovu dela ili po clanskom broju ucenika, vec ispishe jedno ispod drugogf! ne znam kako to da resim
Npr. obradorriuss je iznajmio knjigu sa inventarnim brojem 1, 2 i 3 (ukupno 3 knjige) a on mi izbaci u izvestaju (upitu) jedno ispod drugog a ne da je obradorriuss ukupno 3 knjige uzeo!!!

Isto je i sa knjigama ukoliko imamo vise knjiga "Access 2003" ali pod razlicitim inventarnim brojevima isto izbacuje jednu ispod druge a nece da mi sumira da je knjiga "access 2003" bila iznajmljena ukupno 3 puta!!

Ako neko ima neki primer neka mi posalje! molim vas ovo mi je jako hitno!
hvala u napred!
[ Zidar @ 20.12.2004. 16:22 ] @
Ajde da malo pojednostavimo kverije. Ovako:
a) Kveri koji pokazuje koji ucenik je zaduzio koliko knjiga
Code:

SELECT Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje, Count([Zaduzenje knjigama].Invbroj) AS CountOfInvbroj
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
GROUP Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje
WHERE((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))

Tvoj originalni kveri grupise prvo po datumu, a treba po Clanovi.Ime. Stoga sam izbacio Datum iz SELECT liste. AKo nesto nije u SELECT listi, ne sme da bude ni u GROUP BY, pa sam ga izbacio i odande. HAVING sam promenio u WHERE. HAVING se primenjuje na ono polje po kome radis COUNT. WHERE imas na dnu liste funkcija za grupisanje, ne vidi se odmah, mora da se skroluje na dole. ORDER BY sam izbacio jer Access ignorise ORDER BY kad radi report (ne ignorise uvek, ali ga ni ne gleda). report ima svoju logiku u odredjivanju redosleda i da bi bio siguran uradi sortiranje u reportu.


b) kveri koji pokazuje koja knjiga je najcitanija:
Code:

SELECT [Unos knjiga].[Naslov dela], [Unos knjiga].Autor, Count([Unos knjiga].[Naslov dela]) AS [CountOfNaslov dela]
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
GROUP BY [Unos knjiga].[Naslov dela], [Unos knjiga].Autor
WHERE ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))

I ovde sam izbacio Datum Uzimanja iz SELECT/GROUP BY liste, promenio HAVING u WHERE i izbacio ORDR BY.





[ obradorriuss @ 20.12.2004. 23:29 ] @
Zidar pre svega hvala na jako brzom odgovoru!
Ali problem se opet javi...
Probao sam da odradim i izmenim upit za najcitaniju knjigu, ali posle te izmene access 2003 mi izbaci poruku:
" Syntax error (missing operator) in query expression '[Unos knjiga].Autor WHERE ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))'. "
Zasto mi se pojavljuje sad ovo??
[ Zidar @ 21.12.2004. 14:25 ] @
Ja sam kucao SELECT direktno u poruku. Mozda fali neka zagrada ili je neka dvotacka gde ne treba da bude, tesko je videti iz koda. Imas generalnu ideju, probaj da napravis kveri nanovo, odpocetka i verovatno ce taj problem nestati. Ako ne uspe, cut/paste SQL izraz u poruku pa cemo da kopamo.

:-)
[ obradorriuss @ 22.12.2004. 07:50 ] @
Prijavljuje istu gresku!!
Reci mi jel moze ovako da izgleda:
-NAJCITANIJA-

SELECT [Unos knjiga].[Naslov dela], [Unos knjiga].Autor, Count([Unos knjiga].[Naslov dela]) AS [CountOfNaslov dela]
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
WHERE ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))
GROUP BY [Unos knjiga].[Naslov dela], [Unos knjiga].Autor
ORDER BY [Unos knjiga].[Naslov dela], [Unos knjiga].Autor, Count([Unos knjiga].[Naslov dela]);


-NAJVREDNIJI-

SELECT Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje, Count([Zaduzenje knjigama].Invbroj) AS CountOfInvbroj
FROM ([Zaduzenje knjigama] INNER JOIN Clanovi ON [Zaduzenje knjigama].[Clanski broj] = Clanovi.[Clanski broj]) INNER JOIN [Unos knjiga] ON [Zaduzenje knjigama].Invbroj = [Unos knjiga].Invbroj
WHERE ((([Zaduzenje knjigama].[Datum uzimanja]) Between [Unesite pocetni datum:] And [Unesite krajnji datum:]))
GROUP BY Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje
ORDER BY Clanovi.Prezime, Clanovi.Ime, Clanovi.Razred, Clanovi.Odeljenje, Count([Zaduzenje knjigama].Invbroj);

???

Ovako mi radi trenutno, mozda GROUP by treba da stoji posle WHERE !!??
Probao sam i sa New query pa istu gresku prijavi.
Ovaj gore kod sto sam napisao trenutno funkcionise, ali moram da ga istestiram josh malo? jel se tebi chini OK napisanim??
[ Zidar @ 22.12.2004. 13:49 ] @
Izvinjavam se, greska je bila moja. Tacno, WHERE mora da bude pre GROUP BY. Poslednje verzije koje si napravio deluju OK.Probaj dva-tri primera tek da se uveris da sve radi. Ako pravis kveri koristeci Accessov prozor za kverije, onda sve bud epostavljeno kako treba. Jedina caka je kako staviti WHERE. Kao sto rekoh, lista iz koje biras sumirajuce funkcije (GROUP BY, MIN, MAX, COUNT, SUM) na dnu ima opciju WHERE. WHERE se ne vid kad se lista otvori, mora da se skroluje do kraja. I bice sve OK.

Srecna nova godina.

:-)