View Full Version : MS SQL i ASP problem
Pozdrav svima,
Imam jedan problem, rješio sam ga, ali mi se čini prilično glupo i nije mi jasno zašto do toga dolazi. Radi se o sljedećem.
Imam MS SQL bazu i sad šaljem upit bazi preko SQL upita npr.
strSQL = "SELECT * FROM tblMoja_Tablica ORDER BY id DESC"
Tablica ima oko 30 polja koje trebam ispisati, e sad on meni neće ispisati par polja (jedno ili dva), ali kad stavim
strSQL = "SELECT *, polje_koje_nece_prikazati1, polje_koje_nece_prikazati2 FROM ... "
Onda sve funkcionira. Meni nije jasno zašto do toga dolazi ? Zar ne znači da kad stavim znak * da uzima sva polja u toj tablici ?
Zar nitko nema nikakvu ideju zbog čega dolazi do toga ?
Nemoj koristiti *, stvara bespotrebno opterecenje na bazu.
Ali meni ionako trebaju sva polja, jer ih moram sve ispisati, a ima ih 30 i ne vidim zašto ne bih koristio * ?
Zato jer je to najgore rješenje. Zamisli da tablica naraste na xxxxxx recorda. Ili da imaš puno posjetitelja/konekcija. Bez obzira na postavke app. poola i snagu servera, brzo ćeš udariti u sve moguće limite.
Vadi jedan po jedan record i ispisuj ga dok god ne dođeš do zadnjeg.
teddybeer
27-03-2007, 11:19
...
Vadi jedan po jedan record i ispisuj ga dok god ne dođeš do zadnjeg.
Ocito ga nisi shvatio. sa (*) on selektira sve stupce u tablici a ne recorde!!!
naravno da ce koristiti * i da je to jedino ispravno rjesenje?!?
@tjodalv kakva ti je struktura u tablice? imas unutra nekakve null vrijednosti ili nesto?
Neka polja u tablici koja se ne moraju popunjavati imaju defaultnu vrijednost 0. Problem je u tome što ja recimo ispisujem podatke iz te tablice i imam polje opis. Polje opis je popunjeno kod svakog recorda ali kad ga želim prikazati on ne prikazuje vrijednost polja opis iako je ono popunjeno.
No kada u SQL upitu definiram to polje onda ga prikaže znači kad stavim
strSQL = "SELECT *, opis FROM tblNeka_tablica ...."
Isto tako znalo mi se događati da kada definiram polje opis u SQL upitu da tada prikazuje polje opis, ali ne želi prikazati neko drugo polje, pa moram i njega definirati u SQL upitu.
Uglavnom te stvari koje se događaju meni su totalno nepoznate i nemam uopće ideje zašto do toga dolazi.
teddybeer
27-03-2007, 12:53
null i 0 nije isto. 0 nema veze s tim sigurno...
jel ti je polje "id" definirano kao kljuc?
imas mozda vise recorda sa istim id-em?
jesi siguran da ti treba order by a ne sort?
sto ti ustvari upit treba napraviti?
polje id mi je ključ i ono je tipa unique identifier, tako da nemože doći do toga da postoje dva zapisa s istim id brojem. Ovo ORDER BY nije toliko bitno, to mi je samo da mi sortira rezultate na način da zadnje unešene prikazuje prve.
To je jednostavan upit prema bazi gdje trebam prikazati podatke iz tablice na stranici. Nikakva velika mudrost.
teddybeer
27-03-2007, 14:23
neam pojma onda... u upitu nije problem... znam da je mysql prije verzije 4.1.6. imala problema sa "skrivanjem" recorda.
Ja testiram kod sebe i sve mi dobro ispada... tak da ono...
..ili nabrajaj kolumne nakon selecta, ili napravi ugnjezdeni upit ili u asp-u izlistaj podatke naopacke.
jbg. :rocjena:
Da li postoji kakvo ograničenje na maksimalni broj vraćenih atributa kada se oni automatski selektiraju? Takvo ograničenje ne mora biti parametar same baze, već može biti parametar nekog sloja za pristup bazi (poput ODBC-a ili sl.) ili alata (klijenta, kontrole i sl.). Parametar je možda tako konfiguriran.
Isto i za najveću dopuštenu duljinu sadržaja u stupcu (koju možda tvoje polje opisa prelazi) - isto se može odnositi na neki međusloj, kontrolu ili sl.
Ovo se odnosi na retke, ne na stupce, ali možda neki naputci mogu pomoći:
http://www.thescripts.com/forum/thread81014.html
Tri zanimljiva komentara:
- ažurirati statistike tablice
- dropnuti i rekreirati problematične stupce (predzadnji)
- najveća dopuštena duljina podatka u stupcu
teddybeer
28-03-2007, 09:31
vidis na to nikad nisam pomislio :)
mysql mislim da moze raditi tablice sa max 40.000 kolumni.
(ili 10.000 nisam 100% siguran). kroz odbc driver se moze selektirati
255 kolumni... istina da nikad nisam radio s asp-om ali da nebi mogo vratiti
30 stupaca mi se cini apsurdno... zivio M$ :D:D:D:D
Sigurno nije ograničenje na 30 stupaca. Mislio sam da postoji neki parametar kojim se ograničenje može uvesti, pa da ti je to _slučajno_ tako podešeno. Naprosto možeš probati selektirati sve iz neke druge veće tablice, pa vidjeti.
vBulletin® v3.7.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.