[ postar2 @ 25.10.2007. 09:06 ] @
Cao svima, prvo da kazem da sam pocetnik, pa ako sam nesto pocetnicki zbrljao, SORRY !!!

Evo koda :

SELECT K.korisnik, T.Usluga, E.Status, E.Datum_Promene
FROM Evidencija AS E, Korisnik AS K, Tip_usluge AS T
WHERE E.ID_korisnik=K.ID_korisnik And K.korisnik Like [Naziv Korisnika];

Ideja je da iz tri različite tabele vučem podatke koji su mi bitni za prikaz pretrage po nazivu korisnika : K.korisnik Like [Naziv Korisnika]

Sve je u redu osim što mi izbacuje duplirane podatke:

korisnik Usluga Status Datum_Promene
Pera kruške Čeka 15.06.2007
Pera kruške Čeka 15.06.2007
Pera kruške Evidencija 10.06.2007
Pera kruške Predato 16.06.2007
Pera kruške Predato 19.06.2007
Pera kruške Završeno 20.06.2007
Pera jabuke Čeka 15.06.2007
Pera jabuke Čeka 15.06.2007
Pera jabuke Evidencija 10.06.2007
Pera jabuke Predato 16.06.2007
Pera jabuke Predato 19.06.2007
Pera jabuke Završeno 20.06.2007
Pera banane Čeka 15.06.2007
Pera banane Čeka 15.06.2007
Pera banane Evidencija 10.06.2007
Pera banane Predato 16.06.2007
Pera banane Predato 19.06.2007
Pera banane Završeno 20.06.2007
Pera Pomorandže Čeka 15.06.2007
Pera Pomorandže Čeka 15.06.2007
Pera Pomorandže Evidencija 10.06.2007
Pera Pomorandže Predato 16.06.2007
Pera Pomorandže Predato 19.06.2007
Pera Pomorandže Završeno 20.06.2007
Mika kruške Evidencija 15.06.2007
Mika banane Evidencija 15.06.2007
Mika jabuke Evidencija 15.06.2007
Mika pomorandže Evidencija 15.06.2007

Kada dodam GROUP BY :


SELECT K.korisnik, T.Usluga, E.Status, E.Datum_Promene
FROM Evidencija AS E, Korisnik AS K, Tip_usluge AS T
WHERE E.ID_korisnik=K.ID_korisnik And K.korisnik Like [Naziv Korisnika]
GROUP BY K.korisnik
ORDER BY K.korisnik, T.Usluga, E.Status, E.Datum_Promene;

Izadje mi poruka :


You tried to execute a query that does not include the specified expression 'Usluga' as part of an aggregated function

Gde grešim i šta treba da ispravim ?

HVALA !!!
[ chachka @ 25.10.2007. 11:13 ] @
U prvom upitu nisi povezao tabelu 'Tip_usluge' sa ostalim tabelama.

U drugom upitu nisi naveo sve kolone iz SELECT dela i u GROUP BY deo, verovatno treba:
Code:
...
 GROUP BY K.korisnik, T.Usluga, E.Status, E.Datum_Promene
...
[ Zidar @ 25.10.2007. 14:28 ] @
Kad bi koristio JOIN umesto WHERE da povezes tabele, bilo bi jasnije sta se radi i lakse bi se nasla greska. Formatiranje takodje pomaze.

Tvoj iskaz se mose napisati ovako (samo sam prelomio linije i pomerio neke linije unutra):
Code:

SELECT 
  K.korisnik, 
  T.Usluga, 
  E.Status, 
  E.Datum_Promene
FROM 
  Evidencija AS E, 
  Korisnik AS K, 
  Tip_usluge AS T
WHERE 
  E.ID_korisnik=K.ID_korisnik 
  And K.korisnik Like [Naziv Korisnika];

Sad se vidi ljasno da imas tri tabele a samo su dve povezane. Chachka je to odmah primetio, ja nisam. Ali, formatiranje je i meni otvorilo oci. To sto nisi povezao i trecu tabelu jeste jedan od razloga sto se javljaju duplikati. Tvoj iskaz (bez trece tabele) u stvari povezuje tabele Evidencija i korisnik, da bi procitao naziv korisnika kao K.Korisnik. Onda se sve to pomnozi sa tabelom Tip_Usluge , i dobijes za svaki red iz tabele Evidencija onoliko redova koliko imas vredova u tabeli Tip_Usluge.

Dalje, WHERE uslov ima dve funkcije u tvom izrazu.
Code:
WHERE E.ID_korisnik=K.ID_korisnik
sluzi da 'poveze' tabele, a deo
Code:
And K.korisnik Like [Naziv Korisnika];
sluzi da izfiltrira vraceni set podataka po odredjenom parametru (Ovo je Access kveri pretpostavljam, ni jedan drugi dijalekt SQL ne koristi parametre na ovaj nacin) . Povezivanje je bolje (preglednije, manje podlozno greskama) raditi sa JOIN a WHERE ostaviti za definisanje filtera.

Tvoj kod bi trebao da izgleda nekako ovako:
Code:

SELECT 
  K.korisnik, 
  T.Usluga, 
  E.Status, 
  E.Datum_Promene
FROM 
  Evidencija         AS E
JOIN  Korisnik      AS K     ON E.ID_korisnik=K.ID_korisnik 
JOIN   Tip_usluge AS T     ON T.Usluga_ID = E.UslugaID
WHERE K.korisnik = [Naziv Korisnika];


Ovo je SQL sintaksa, Access je verovatno ne bi prihvatio, ali u Accesu imas lep prozor za graficko pravljenje povezivanje tabela, pa probaj tamo. Jednostavno povezes kolone koje treba povezati i Access ce napisati JOIN za tebe. Kad visi rezultat, videces da li ti treba GROUP BY ili ne. GROUP BY obicno je pracen nekakvim brojanjem ili sumiranjem, sto ne izgleda da ti je cilj, ne vidim nikakvu kolicinu u SELECT listi.

Probaj

:-)