Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 2.975 pregleda

Najnovija ↓

SELECT TOP - neće da radi 09.01.2008. u 18:43 · pre 229 meseci #1
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?
Potpis
Expert Opinions - Niche Articles
Re: SELECT TOP - neće da radi 09.01.2008. u 22:02 · pre 229 meseci #3
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*"
Re: SELECT TOP - neće da radi 09.01.2008. u 22:25 · pre 229 meseci
izmenjeno 1 put, poslednji put Getsbi 10.01.2008. u 08:00
  1. Getsbi10.01.2008. u 08:00zapis iz teksta poruke
#4
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.
Potpis
https://mzahorjanski.wixsite.com/mzahorjanski
https://www.fiverr.com/miroljubzahorja?up_rollout=true
https://www.youtube.com/@miroljubzahorjanski


Re: SELECT TOP - neće da radi 09.01.2008. u 22:38 · pre 229 meseci #5
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?
Potpis
Expert Opinions - Niche Articles
Re: SELECT TOP - neće da radi 10.01.2008. u 00:29 · pre 229 meseci #7
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.
Re: SELECT TOP - neće da radi 10.01.2008. u 00:36 · pre 229 meseci #8
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. '%'...
Re: SELECT TOP - neće da radi 10.01.2008. u 17:25 · pre 229 meseci #10
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 %.

:-)
Re: SELECT TOP - neće da radi 10.01.2008. u 18:10 · pre 229 meseci #11
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.
Potpis
https://mzahorjanski.wixsite.com/mzahorjanski
https://www.fiverr.com/miroljubzahorja?up_rollout=true
https://www.youtube.com/@miroljubzahorjanski


Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme