[ Milos Sreckovic @ 10.01.2006. 10:19 ] @
kako selektovati sva polja iz tabele osim jednog(ili dva)? predpostavimo da ih ima mnogo i da nije zdravo ispisivati sva ostala.... |
[ Milos Sreckovic @ 10.01.2006. 10:19 ] @
[ Fedya @ 10.01.2006. 10:29 ] @
Ne razumem kako mislis selektovati ali pretpostavljam da hoces da vidis podatke iz svih kolona sem jedne.
To mozes najlakse da uradis preko pogleda. Znaci: CREATE VIEW vwPogled AS SELECT Sve kolone osim jedne FROM OriginalnaTabela i onda das potrebne privilegije za dati pogled ali ne i za originalnu tabelu. Ako sam dobro shvatio pitanje ovo je resenje, ako nisam ispravi me. [ Dejan Topalovic @ 10.01.2006. 10:40 ] @
@Fedya: Pa ako bi koristio View, opet bi morao da navede sve te nazive kolona...
@konj: Mislim da ne mozes to izvesti, osim da eksplicitno navedes nazive kolona, cije vrijednosti trazis... [ Fedya @ 10.01.2006. 10:51 ] @
Da, nisam dobro shvatio pitanje. Mislio sam da za korisnika "nije zdravo" da vidi sva polja.
[ Milos Sreckovic @ 10.01.2006. 11:38 ] @
Poenta je sto treba da upism podatke u tabelu kroz query ali ne smem da imam polje koje ima auto_increment jer on to sam treba da upisuje, a ne ja. To mi radi ali prilikom pisanja sql recenice moram da navedem 15 polja(sva ostala osim auto_increment). pa sam mislio da ima nesto tipa "sve osim xxxx". Ali ako nema onda sam osudjen
![]() [ Dejan Topalovic @ 10.01.2006. 11:43 ] @
Pa mozes izvesti to i bez navodjenja svih kolona. :)
Code: INSERT INTO tabela VALUES(NULL, neka_kolona1, neka_kolona2, ...); NULL je za tu auto_increment kolonu... [ jablan @ 10.01.2006. 11:44 ] @
Preporuka je da se uvek, ali uvek taksativno navode sva polja u kveriju, da se ne bi desilo da puca na sve strane ako se neko polje na tabeli promeni, doda, obriše itd.
[ Milos Sreckovic @ 10.01.2006. 12:37 ] @
Citat: StRiPy: Pa mozes izvesti to i bez navodjenja svih kolona. :) Code: INSERT INTO tabela VALUES(NULL, neka_kolona1, neka_kolona2, ...); NULL je za tu auto_increment kolonu... mozda sam ne razumljiv. imam mysql(baza-linux) na jednom kompu i delphy(klijent-win) na drugom. onda namestim sa ClientDataSet i DataSetProvider da mi pogleda celu tabelu. onda promenim neke podatke ili dodam nove redove i to ostaje u logu ClientDataSeta onda kazem ClientDataSet.applyupdate da ono sto sam promenio promeni i u bazi. Posto postoji polje koje je auto_increment i ono je primarni kljuc onda ako koristim celu tabelu moram i u njega nesto da upisem a necu jer on sam treba da stavi neki broj(najveci postojeci+1). pa sam onda smislio da to uradim pomocu query-a tako sto cu izostaviti to polje. uspelo je ali je select recenica mnogo dugacka. Mene interesuje kako da skratim tu recenicu, nista vise. Citat: jablan: Preporuka je da se uvek, ali uvek taksativno navode sva polja u kveriju, da se ne bi desilo da puca na sve strane ako se neko polje na tabeli promeni, doda, obriše itd. ovo predpostavljam da se odnosi na deo kada se koristi INSERT sto podrzavam, jer baza ume da poremeti redoslede polja(mnogo kose ode) [ Fedya @ 10.01.2006. 12:40 ] @
U tom slucaju ne moze drugacije
![]() [ Dejan Topalovic @ 10.01.2006. 12:51 ] @
Citat: konj: Posto postoji polje koje je auto_increment i ono je primarni kljuc onda ako koristim celu tabelu moram i u njega nesto da upisem a necu jer on sam treba da stavi neki broj(najveci postojeci+1). pa sam onda smislio da to uradim pomocu query-a tako sto cu izostaviti to polje. uspelo je ali je select recenica mnogo dugacka. Ako ne zelis da u INSERT izrazu imas sve navedene kolone, onda uradis onako kako sam ti rekao. Auto_increment kolona ce jednostavno ignorisati NULL i vrijednost ce se normalno povecati za 1, a NULL koristis samo zato da ne bi morao navoditi imena svih kolona... Izraz Code: pri cemu se vrijednost auto_increment kolone automatski povecava, je isti kao iINSERT INTO tabela(neka_kolona1, neka_kolona2, ...) VALUES(neka_kolona1_value, neka_kolona2_value,...); Code: INSERT INTO tabela VALUES(NULL, neka_kolona1_value, neka_kolona2_value,...); jer u ovom drugom slucaju auto_increment kolona ignorise NULL i povecava vrijednost za 1... Ne brini se, nece se sacuvati NULL umjesto stvarne vrijednosti. :) U SELECT izrazu ne mozes drugacije izbaciti odredjene kolone, osim da ih izostavis iz upita... [ jablan @ 10.01.2006. 13:29 ] @
Citat: konj: ovo predpostavljam da se odnosi na deo kada se koristi INSERT sto podrzavam, jer baza ume da poremeti redoslede polja(mnogo kose ode) Uvek znači uvek. Pre svega u SELECT. Šta uopšte znači "mnogo dugačak upit"? Baza/program ti ne dozvoljava toliko dugačke upite, ili te mrzi da kucaš? Citat: StRiPy: Cek malo... Upisujes nesto u tabelu, a spominjes select. Da nisi mislio mozda na INSERT izraz? Mislim da misli na SELECT; dataset mu automatski generiše INSERT i UPDATE kverije. [ Fedya @ 10.01.2006. 13:34 ] @
@StRiPy:
Mislim da ga nisi dobro shvatio on hoce nesto tipa: INSERT INTO tabela VALUES (SELECT Lista polja FROM tabela2) U tom slucaju ne moze da skrati listu. [Ovu poruku je menjao Fedya dana 10.01.2006. u 14:34 GMT+1] [ Dejan Topalovic @ 10.01.2006. 13:41 ] @
Ne radim sa Delphiem, pa ne znam kako se ti podaci obradjuju...
[ Milos Sreckovic @ 10.01.2006. 14:17 ] @
jablan je upravu, sam mi generise insert i update(nije li to divno, al osecam da ce da me saceka jednom)
na dugacak upit mislim da ima mnogo da se pise. pazi kako izgleda Code: DataModuleSethq.SQLQueryCitanje.SQL.Add(select investitor, vrsta_posla, vrsta_objekta, nacin_ponude, predmet_ponude, rok_dostavljanja_ponude, iznos_ponude , kratak_opis_ponude from ponude); [Ovu poruku je menjao konj dana 10.01.2006. u 15:18 GMT+1] [ jablan @ 10.01.2006. 14:22 ] @
Citat: konj: jablan je upravu, sam mi generise insert i update(nije li to divno, al osecam da ce da me saceka jednom) na dugacak upit mislim da ima mnogo da se pise. pazi kako izgleda... Hahaha, hoćeš da ti ja pastujem neke upite iz naše aplikacije da vidiš šta je dugačak upit? Kucaj more to... E, da, mislim da i nećeš moći da eliminišeš autoincrement polje (verovatno ti je to primarni ključ u toj tabeli) iz tog SELECT upita, jer ti na osnovu tog primarnog ključa dataset generiše UPDATE i DELETE kverije. Razmotri da umesto korišćenja autoincrement polja za primarni ključ koristiš neko uniqueidentifier polje (ne znam kako se to zove u MySQL, ni da li ga ima uopšte). Onda sam generišeš njegovu vrednost u aplikaciji, kad dodaješ red u dataset i nemaš problema sa konfliktom pri INSERTU. [ Milos Sreckovic @ 10.01.2006. 15:05 ] @
Citat: jablan: Hahaha, hoćeš da ti ja pastujem neke upite iz naše aplikacije da vidiš šta je dugačak upit? Kucaj more to... Nemoj da vices:) ja sam jos mlad i zelen i nisam se sretao sa mnogo razlicitih stvari Ovo mi je prvi put da se bakcem sa sql-om(osim sto ga ove godine ucim u skoli pa sam uzeo kao maturski) problem je u tome sto je upit velik jer je cisto nabrajanje. Da je velik zato sto je komplikovan to je druga stvar. Ovako izgleda glupo, kao da ti se smeje jer ima neko lepo i elegantno resenje a ti silujes. Citat: jablan: E, da, mislim da i nećeš moći da eliminišeš autoincrement polje (verovatno ti je to primarni ključ u toj tabeli) iz tog SELECT upita, jer ti na osnovu tog primarnog ključa dataset generiše UPDATE i DELETE kverije. i ja sam mislio isto ali radi sta mu ja mogu, samo da me negde ne strefne kde se ne nadam pa da moram nesto iz pocetka [ Milos Sreckovic @ 10.01.2006. 15:50 ] @
strefilo me
ako imam sve isto osim tog primary key-a onda mi update-uje sva ta polja. logicno je, ne bi ni proveravao da nisi rekao. sad cu da vidim kako to da resim [ broker @ 11.01.2006. 08:55 ] @
Ako u DataSet-u imas autoincrement polje, podesi za njega da je ReadOnly := True i da je Required := False pa ce ti apliakcija sama raditi ono sto treba sa tim poljem, tj nece ga ni upisivati u tabelu na server vec ce prepusiti serveru da on sam dodeli vrednost.
[ Milos Sreckovic @ 11.01.2006. 10:51 ] @
namestim pre pokretanja programa, ali opet mi trazi polje i prica kako je prazno. Verovatno treba da se podesi direktno pre nego sto idem na ApplyUpdate ali ne znam kako.
resio sam tako sto sam program generise sifru tako sto vidi koja je najveca u bazi pa poveca za jedan. Ako znas kako iz koda da promenim definiciju polja javi Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|