Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SELECT TOP - neće da radi

[es] :: Access :: SELECT TOP - neće da radi

[ Pregleda: 612 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 391
*.adsl-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon SELECT TOP - neće da radi09.01.2008. u 17:43

Pozdrav svima.
Naišao sam na problem, imam sledeći upit:
SELECT TOP 5 MemberID FROM MojaTabela WHERE MemberName LIKE 'tox%' ORDER BY Age DESC

Dakle, imam tabelu sa članovima i hoću da izlistam 5 najstarijih članova kojima ime počinje sa "tox" - na primer... Međutim ovo ne radi kako treba, tj. dobijeni rezultat je isti kao i da nema onog "TOP 5", dakle dobijem sve redove iz tabele.
Kada iz izraza izbacima onaj ORDER BY deo sve radi kako treba.
Koristim C# ( .NET 2.0) i MS Access bazu...

Šta mi je činiti?
09.01.2008. u 17:43 

Getsbi
Miroljub Zahorjanski
Vršac

Moderator
Član broj: 124608
Poruke: 1286
77.46.170.*



Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 19:32
Ako dva ili više zapisa imaju istu vrednost, svi će biti prikazani bez obzira na TOP n ako postoji i klauzula ORDER BY.
I'll know what I want, when I see it.
09.01.2008. u 19:32 

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 1734
*.100.46-69.q9.net.



Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:02
Kod mene radi ovo:
Code:

SELECT TOP 5 Member, Age
FROM tblMembers
WHERE Member Like "tox*"
ORDER BY Age DESC;


Onako kako si ti napisao, ne treba da vrati nista :-) LIKE 'tox%' je MS SQL sintaxa. Access sintaxa je Like "tox*"
09.01.2008. u 21:02 

Getsbi
Miroljub Zahorjanski
Vršac

Moderator
Član broj: 124608
Poruke: 1286
77.46.170.*



Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:25
Ovo vraća sve zapise kod kojih je STIMUL = 0
Code:

SELECT TOP 5 RADNICI.PREZIME, RADNICI.STIMUL
FROM RADNICI
WHERE (((RADNICI.STIMUL)=0))
ORDER BY RADNICI.STIMUL;


a ovo vraća samo prvih 5
Code:

SELECT TOP 5 RADNICI.PREZIME, RADNICI.STIMUL
FROM RADNICI
WHERE (((RADNICI.STIMUL)=0));

Te dve klauzule se isključuju. Ili bolje rečeno druga poništava prvu.

Ovako bi bilo ispravno. ORDER BY nad kolonom koja ne učestvuje u uslovu:

Code:

SELECT TOP 5 RADNICI.PREZIME, RADNICI.STIMUL
FROM RADNICI
WHERE (((RADNICI.STIMUL)=0))
ORDER BY RADNICI.PREZIME;


Tačno je da to kod kolege nije slučaj ali možda nekom pomogne.



[Ovu poruku je menjao Getsbi dana 10.01.2008. u 08:00 GMT+1]
I'll know what I want, when I see it.
09.01.2008. u 21:25 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 391
*.adsl-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:38
Hvala, shvatio sam kako to ide i rešio sam problem, doduše na gluplji način - vrati se redova kolko se vrati, pa ako ima više redova nego što je pisalo u TOP-u onda taj višak izbacim iz DataTable objekta.


E sad me Zidar zbunio. :| Ja sam pisao svuda % a ne * i sve radi lepo( to sam naučio ovde ). Kada stavim * onda ne radi kako treba. A da nema to neke veze sa verzijom Jet-a?
09.01.2008. u 21:38 

Getsbi
Miroljub Zahorjanski
Vršac

Moderator
Član broj: 124608
Poruke: 1286
77.46.170.*



Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:44
Kod mene je isto kao i kod Zidara * znak za bilo koji niz u nastavku.
I'll know what I want, when I see it.
09.01.2008. u 21:44 

lukeguy
Novi Sad

Član broj: 46545
Poruke: 334
*.com
Via: [es] mailing liste



Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:29
to ima veze sa SQL sintaksom. ako se ne varam, za SQL 92 su procenti,
a za ovu novu su zvezdice. a Access može da se konfiguriše koju da
koristi. a pošto čovek u ovom slučaju pristupa iz .Neta i pomoću
drajvera moguće je da drajver zahteva ovu notaciju sa procentima.
09.01.2008. u 23:29 

sallle
Sasa Ninkovic
Beograd

Član broj: 146
Poruke: 249
*.adsl.beotel.net.

ICQ: 20785904


Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:36
s obzirom da po sql standardu redosled redova nije garantovan, TOP n bez ORDER BY teoretski nema nikakvu upotrebnu vrednost...

Posto toxi koristi c#, i kaci se na access preko oleDB drajvera, lokalni accessovi dzoker karakteri ne bi trebalo da ga tangiraju, vec samo treba da fura sql standard, tj. '%'...
09.01.2008. u 23:36 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 391
*.adsl-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:58
Hvala celoj ekipi, imate po pivo kad se vidimo!
09.01.2008. u 23:58 

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 1734
*.100.46-69.q9.net.



Profil

icon Re: SELECT TOP - neće da radi10.01.2008. u 16:25
meni su ovde novost bar dve stvari - 1) sto rece Getsbi da se TOP i ORDER BY se isključuju. Ili bolje rečeno druga poništava prvu. zvuci cudno, ali me nista ne cudi, Access ne prati SQL standarde u potpunosti. Nisma proveravao, ali dobro je negde u malom mozgu setiti se ovoga jkad zatreba.
2) nisam znao da se moze konfigurisati wildcard u Accessu

Za .net ne znam, ali ima logike. I iz Accesa kad saljes upit na MS SQL kucas * a drajver to prevede u %.

10.01.2008. u 16:25 

Getsbi
Miroljub Zahorjanski
Vršac

Moderator
Član broj: 124608
Poruke: 1286
91.150.113.*



Profil

icon Re: SELECT TOP - neće da radi10.01.2008. u 17:10
Možda bi prava izjava bila: TOP n neće vratiti samo n zapisa ako se bude zahtevao redosled (ORDER BY) po polju koje je učestvovalo u uslovu WHERE. Nešto o tome sam pročitao davno u nekom tutorijalu na netu pa mi sinoć palo napamet da proverim pošto je pitanje bilo vrlo blizu.
A možda je u pitanju zbilja neka nedoslednost Access-a. Neki dobar majstor za SQL kao Chachka bi mogao da nam to odgonetne.

I'll know what I want, when I see it.
10.01.2008. u 17:10 

[es] :: Access :: SELECT TOP - neće da radi

[ Pregleda: 612 | Odgovora: 10 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.