|
[ giger @ 07.09.2006. 22:12 ] @
| Imam problem sa ubacivanjem novih slogova u tabelu...
Imam slogove sa IDjevima 1,2,7,8,9... Kada ubacim novi slog (10) dodaje se posle sloga 2.... (????) 11,12 isto posle desetke, a tek 13 ce da se pojavi na kraju tabele.
Nista ne kapiram, ovo mi se prvi put desilo... Komanda je najjednostavnija: "INSERT INTO FAKULTETI VALUES ('11','Beogradski Univerzitet','ETF')"
Ako hocete neke shotove, poslacu ih...
Jel ima neko ideju?
10x in adv |
[ lampica @ 07.09.2006. 22:18 ] @
Ne razumem zašto te brine kako SQL server smešta slogove, željeni redosled podataka uvek možeš da postigneš kroz SELECT upit korišćenjem ORDER BY.
[ chachka @ 07.09.2006. 22:30 ] @
Ni jedan server ne garantuje da će redosled pojavljivanja slogova svaki put kada izvršiš
Code:
SELECT *
FROM Fakulteti
biti isti! Za server su svi slogovi ravnopravni. Server nezna da ti hoćeš da sortiraš podatke po IDjevima. To mu moraš eksplicitno reći upotrebom klauzule ORDER BY. U tvom slučaju to izgleda
Code:
SELECT *
FROM Fakulteti
ORDER BY id
Dobra praksa je da se u produkcijskim upitima koristi klauzula ORDER BY.
[ giger @ 07.09.2006. 22:41 ] @
Pa nije mi neki problem, ali sam bio 100% ubedjen da se novi slogovi UVEK smestaju na kraj tabele i da "SELECT * FROM" vraca slogove kako su smesteni. Izgleda da bas i nije tako.
[ goranvuc @ 08.09.2006. 06:04 ] @
Citat: giger:Komanda je najjednostavnija: "INSERT INTO FAKULTETI VALUES ('11','Beogradski Univerzitet','ETF')"
Iz prilozenog se vidi da ti je ID znakovnog tipa, pa nije nimalo cudno sto su slogovi uredjeni kao sto kazes, jer tako i treba da se sortiraju.
Citat: giger:Nista ne kapiram, ovo mi se prvi put desilo...
Desice se to svaki put, sve dok ne promenis tip ID kolone na int, ili neki slicni.
[ giger @ 08.09.2006. 15:14 ] @
Pa nije znakovnog tipa. Int je.
Mozes i int da ubacis sa apostrofima. A cak i da je znakovnog tipa, nelogicno je da je redosled 1,2,10,11,12,7,8,9,13 (?)...
[ savkic @ 08.09.2006. 15:49 ] @
> Pa nije mi neki problem, ali sam bio 100% ubedjen da se novi slogovi UVEK smestaju na kraj tabele i da "SELECT * FROM" vraca
> slogove kako su smesteni. Izgleda da bas i nije tako.
Pojednostavljeno, slogovi se smeštaju na prvu slobodnu lokaciju, ta lokacija može biti na kraju baze ili na početku ili u sredini (npr. nastala posle brisanja nekih drugih slogova).
[ dragancesu @ 08.09.2006. 15:52 ] @
Bez brige, dobrodosao u svet baza. To kako baza smesta podatke u bazu je nebitno, softver se trudi da to bude efikasno. Ono sto moras da shvatis je da su podaci u bazi na hrpi, a redosled prikaza je nebitan, s tim ti upravljas. To su ti WHERE i ORDER klauzule.
I zaboravi pojmove prethodni i sledeci slog.
[Ovu poruku je menjao dragancesu dana 08.09.2006. u 17:37 GMT+1]
[ giger @ 08.09.2006. 16:03 ] @
Hvala drugari. Bio sam ubedjen u suprotno, pogotovo sto sam i ovde na ovom forumu jednom procitao post koji je tvrdio ono prvo...
A sad kad bolje razmislim i ima smisla da radi ovako kako radi.
[ goranvuc @ 08.09.2006. 16:27 ] @
Citat: giger: Pa nije znakovnog tipa. Int je.
Mozes i int da ubacis sa apostrofima. A cak i da je znakovnog tipa, nelogicno je da je redosled 1,2,10,11,12,7,8,9,13 (?)...
Ti bas volis da radis kako ne treba :).
Posto sad znamo da je int onda je problem sto nisi stavio da ti je ID primary key, pa sortira onim redom kako si unosio, a ako stavis da je primary sortirace uvek po velicini ID-a bez potrebe da koristis ORDER klauzulu.
[ giger @ 08.09.2006. 23:53 ] @
Aman.
Ja se izvinjavam sto nisam bio jasniji, ali baza je apsolutno korektna u ovom smislu. ID _jeste_ primary key.
Mislim, zato sam i postavio topic, jer me zbunjivalo sve ovo, ali ovi ljudi su mi razjasnili. Mozda ni ti ovo nisi video ranije, ako hoces mogu da ti posaljem i erwin model iz koga sam generisao script, kao dokaz, da je sve ok sto se baze tice.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|