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

SELECT TOP - neće da radi

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

[ Pregleda: 2084 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

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

Sajt: www.articles411.com


+8 Profil

icon SELECT TOP - neće da radi09.01.2008. u 17:43 - pre 198 meseci
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?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 19:32 - pre 198 meseci
Ako dva ili više zapisa imaju istu vrednost, svi će biti prikazani bez obzira na TOP n ako postoji i klauzula ORDER BY.
 
Odgovor na temu

Zidar
Canada

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



+79 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:02 - pre 198 meseci
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*"
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:25 - pre 198 meseci
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]
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

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

Sajt: www.articles411.com


+8 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:38 - pre 198 meseci
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?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 21:44 - pre 198 meseci
Kod mene je isto kao i kod Zidara * znak za bilo koji niz u nastavku.
 
Odgovor na temu

lukeguy
Novi Sad

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



+8 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:29 - pre 198 meseci
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.
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

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

ICQ: 20785904


+4 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:36 - pre 198 meseci
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. '%'...
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

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

Sajt: www.articles411.com


+8 Profil

icon Re: SELECT TOP - neće da radi09.01.2008. u 23:58 - pre 198 meseci
Hvala celoj ekipi, imate po pivo kad se vidimo!
 
Odgovor na temu

Zidar
Canada

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



+79 Profil

icon Re: SELECT TOP - neće da radi10.01.2008. u 16:25 - pre 198 meseci
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 %.

 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: SELECT TOP - neće da radi10.01.2008. u 17:10 - pre 198 meseci
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.

 
Odgovor na temu

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

[ Pregleda: 2084 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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