[ Dragan Tomić @ 12.11.2006. 03:51 ] @
| Pozdrav svima!
Da li netko može prevesti upit SELECT * FROM tblBanner ORDER BY RAND() LIMIT 1; u access format?
Pročitao sam i ovo pa možda nekom pomogne pri odgovoru na moje pitanje:
Ako se koristi MS Access baza podataka, RAND funkcija je malo drugačija. Zamijenite RAND() sa RND (LEN ([filename]).
Ja sam ovo napravio i preveo u access format SELECT * FROM tblBanner ORDER BY RND (LEN ([filename])) i to mi vrati sve recorde u tblBanner a meni treba samo slučajni record iz tblBanner!!!
Ima li tko rješenje za ovo?
Hvala |
[ goranvuc @ 12.11.2006. 06:42 ] @
Naravno da ima.
Code:
SELECT TOP 1 *
FROM tblBanner
ORDER BY RND(LEN([filename]))
Access nema Limit vec je ubacen TOP.
[Ovu poruku je menjao goranvuc dana 12.11.2006. u 11:51 GMT+1]
[ Dragan Tomić @ 12.11.2006. 16:10 ] @
Probao sam ovo što si mi napisao ali to mi ne daje pravi random (slučajni record koji meni treba).
Naime kada mijenjam TOP 2 izbaci mi 2 record, TOP 3 izbaci 3 record.
Meni bi trebalo ako imam n recorda u bazi tblBanner da mi upit izbaci slučajni record svaki put kada testiram upit a ne odgovarajući record iz tablice.
Ima li kakvo riješenje za to?
Hvala
[ goranvuc @ 12.11.2006. 17:39 ] @
Nesto ti ne radis dobro.
TOP n ti daje prvih n recorda, a ne n-ti rekord, tako da
Citat: Dragan Tomić:
Naime kada mijenjam TOP 2 izbaci mi 2 record, TOP 3 izbaci 3 record.
ne stoji.
SQL je sigurno dobar, provereno 100%!!!
[ Dragan Tomić @ 12.11.2006. 18:39 ] @
Ne znam u čemu je problem ali mi ne daje ono što mi treba.
Evo prikačio sam slike što mi se dešava kada upišem SQL i testiram.
[ goranvuc @ 12.11.2006. 19:04 ] @
Da li si upit izvrsio vise puta i svaki put dobio isti rekord?
Nismo u prilogu videli koji je to rekord koji dajes kao primer.
Samo da ti objasnim: Kada RND funkciji u SQL upitu kao parametar dodelis neku kolonu ili funkciju na koloni, postizes da se RND inicira pri svakom rekordu. Zato mi nije jasno sta nije u redu: vraca ti samo jedan rekord i to po slucajnom izboru - pa zar nije to i trebalo?
[ Dragan Tomić @ 12.11.2006. 19:43 ] @
Stvar je u tome što mi svaki put kada testam izbaci isti record a trebao bi po slucajnom izboru.
record --- 1
filename --- images/day2cutelittledogs.gif
url --- day2.cutelittledogs.com"
Kada dodam TOP 3 onda dobijem sva tri recorda kao u priloženoj slici.
[ goranvuc @ 12.11.2006. 19:52 ] @
Ne znam prijatelju, mozda ima veze preko kog provajdera ides, ovo radi za Jet 4.0, ne znam kako je preko ODBC i sl.
[ Dragan Tomić @ 12.11.2006. 20:03 ] @
Provider=Microsoft.Jet.OLEDB.4.0
[ goranvuc @ 12.11.2006. 20:14 ] @
Retko kad priznajem sledecu cinjenicu: Zona sumraka ;)
Mozda se neko drugi seti neceg pametnog.
P.S. Koliko si puta probao test? Meni se desavalo da bude sekvenca od 5-6 ponavljanja istog rekorda kada je osnovni set 3 rekorda.
[ Dragan Tomić @ 12.11.2006. 22:35 ] @
Ovako dodao sam jos 6 recorda i sada mi radi slučajan izbor samo prvi put kada testam. Sad mi je izbacio npr. slika4.jpg i svaki put kada testam prikazuje slika4.jpg a meni bi trebalo da slučajno daje record pa makar nekada se i dva-tri puta ponovio za redom ali mi ne paše da se svaki put ponavlja jedan te isti record.
[ goranvuc @ 13.11.2006. 07:26 ] @
U kom okruzenju izvrsavas to sto zoves test i da li znas kako on funkcionise. Mozda taj tvoj test samo testira ispravnost SQL-a, a kad je rezultat tacan prikazuje "kesiran" sadrzaj, pa ti se zato stalno ponavljaju rezultati. Eksperimentisi malo, menjaj upit na sledeci nacin:
Code:
SELECT TOP 1 *
FROM tblBanner
WHERE LEN([filename]) < 1000
ORDER BY RND(LEN([filename]))
testiraj, pa onda
Code:
SELECT TOP 1 *
FROM tblBanner
WHERE LEN([filename]) < 1001
ORDER BY RND(LEN([filename]))
...
Ako ti vraca razlicite rezultate, onda je verovatno nesto sa kesiranjem, tj. SQL se ne izvrsava u tom tvom alatu ako nije promenjen. Jedino mi to pada na pamet.
P.S. Opisi malo u kom okruzenju i pod kojim uslovima sve to radis.
[Ovu poruku je menjao goranvuc dana 13.11.2006. u 08:38 GMT+1]
[ Dragan Tomić @ 15.11.2006. 10:30 ] @
Radi se o spajanju na bazu iz Dreamweavera 8.
Sada sam napravio novu konekciju iz Dreamweavera 8 na MySQL bazu podataka i u upit iz Dreamweavera upisao
SELECT *
FROM login.tblbanner
ORDER BY RAND()
i sad mi sve radi kako treba. Kada testam dobivam random slike iz baze a to nikako nisam mogao dobiti kada bi se spojio na access bazu.
[ BiloKoje @ 15.11.2006. 14:26 ] @
Radi li se o sortiranju (ORDER BY) ili uslovu (WHERE). Kada u ORDER BY stavim Rnd(nešto) dobijem grešku, po meni OK jer ORDER BY može da ima dve vrednosti ASC i DESC. WHERE mi vraća slučajan primer ako se izvršava nad Number tipom polja, i uradim zaokruženje ako je polje Long.
Ovo sam isprobao, prateći prepisku. Nije mi trebalo pa i ne znam neko rešenje, ali me je malo zaintrigiralo.
[ Dragan Tomić @ 15.11.2006. 16:42 ] @
Radi se o sortiranju ORDER BY.
[ goranvuc @ 15.11.2006. 16:58 ] @
Nisam znao da je ova tema jos uvek "vruca".
Kao sto sam ti rekao, nesto je do okruzenja u kom radis, ili do verzije baze (mozda je starija - 2000, 97), jer kod mene radi u svim mogucim varijantama, a tvoje okruzenje ne mogu da simuliram jer nemam dreamweaver 8.
Mozda ti je nesto i do podesavanja kod WEB servera.
Da bi se uverio u ovo sto pricam (da je SQL korektan) proveri u samom Access-u (pretpostavljam da ga imas, ako ga koristis).
Za @Bilokoje:
Citat:
Kada u ORDER BY stavim Rnd(nešto) dobijem grešku, po meni OK jer ORDER BY može da ima dve vrednosti ASC i DESC
Pretpostavljam da si se zabunio, posto ORDER klauzula naravno ima listu polja kao parametar, pa tek onda ASC/DESC, a kod tebe ne radi verovatno zato sto koristis stari format (97/2000) koji ne podrzava takvu sintaksu kakvu sam naveo.
[ Dragan Tomić @ 15.11.2006. 17:56 ] @
Nije mi jasno zašto ne radi!
Naime kada sam se konektirao na MySQL bazu u DW 8 i postavio upit sve radi kako treba a kada se konektiram u DW 8 na access 2003 bazu ne radi kako treba.
Upit preko MySQL baze mi vraća random (slučajne) recorde a preko Access baze mi stalno vraća isti raspored recorda pa makar testao na hiljade puta.
A što se tiče Web servera koristim IIS pod Windows XP platformom i čak sam testirao preko njega kada sam probao upit preko MySQL baze i sve radi kako treba.
Stvarno bi volio naći rješenje za ovaj problem!
[ goranvuc @ 15.11.2006. 17:59 ] @
Ponovo mi nisi odgovorio na osnovno pitanje: Da li SQL koji sam ti dao radi u samom Access okruzenju (Napravi New Query, pa probaj)?
Ja sam ubedjen da je nesto do podesavanja IIS-a.
[ Dragan Tomić @ 15.11.2006. 19:46 ] @
SQL kojeg si mi poslao radi u access 2003 okruženju.
Sad mi nije jasno gdje tražiti rješenje. Dreamweaver ili IIS!?
Probao sam ponovo u Dreamweaveru upit i sada je proradio kako treba samo mi ne da da normalno podignem bazu na IIS. Znači tu je greška a SQL je ispravan.
[Ovu poruku je menjao Dragan Tomić dana 15.11.2006. u 20:56 GMT+1]
[ goranvuc @ 15.11.2006. 20:20 ] @
Pitaj malo na ASP forumu oko "caka" za ovu kombinaciju IIS + Access, sigurno ima neko ko ce ti pomoci.
[ Dragan Tomić @ 17.11.2006. 19:13 ] @
SELECT *, rand() as random_number
FROM image_img
ORDER BY random_number DESC LIMIT 1
Gorane možeš li mi ovo prevesti u access?
Hvala
[ goranvuc @ 17.11.2006. 19:37 ] @
Code:
SELECT TOP 1 image_img.*, RND(LEN([filename])) AS random_number
FROM image_img
ORDER BY RND(LEN([filename])) DESC
Kao sto sam ti rekao, da bi se "naterao" Access da generise za svaki red podataka nov slucajan broj, mora se kao parametar koristiti ili neko numericko polje ili numericka funkcija na polju drugog tipa. Druga stvar je da Access ne dozvoljava ORDER BY po alijasima, vec po izvornim poljima. Treca stvar je da kada koristis TOP 1 kao u ovom slucaju, gde nije bitno koji je slucajan broj, vec samo da je slucajan - NIJE TI NI POTREBAN ORDER BY **** DESC!
Inace, video sam tvoj topik na .net forumu, i koliko vidim stalno ti ostaje *.ldb, a to je zbog toga sto ti konekcija ostaje otvorena nakon manipulacije, ako je ti otvaras u kodu, zatvori je, a ako ne onda vidi ko je otvara.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|