[ jelenakg18 @ 25.08.2010. 10:08 ] @
Da li postoji nacin da update-ujem polje u tabeli vrednostima iz napravljenog query-ja a ne iz neke druge tabele. Hvala unapred. POZDRAV |
[ jelenakg18 @ 25.08.2010. 10:08 ] @
[ Zidar @ 25.08.2010. 14:05 ] @
Moze naravno, samo je malo zakukuljeno da se napravi takav kveri.
Pocni sa SELECT kverijem, u kome ce prva tabele u listi biti ona koju zelis da UPDATE. Onda dodaj ostalo, dok SELECT ne vrati ono sto ti treba. Onda idi u Query Design i kazi 'hocu da ovo bude UPDATE query'. Pojavice ti se jos jedan red koji se zove Update To. Tu upisi sta zelis da se upise u koje kolone one tabele koaj je bila prva u SELECT. Nije bas najjasnije? Ne brini, 99% ljudi se oseca isto tako, i pri tom niko nije glup. Za sve je kriv Microsoft koji je zakomplikovao stavr bez velike potrebe. Lakse je nekad da se napise SQL rukom. Tu nazalost Microsoft ponovo ne pomaze, jer je SQL editor jednostavno ocajan, NotePad je genije za Access SQL editor. Ovako: SIntaksa za UPDATE se dobija iz SELECT izraza. Ako imas ovakav SELECT: SELECT <lista kolona> FROM TabelaKojuZelimdaUpdate INNER JOIN NekaDrugaTablela ON .... WHERE .... U Accesu se od pocetnog selecta, koji je isti kao u MS SQL, ovako pravi UPDATE UPDATE TabelaKojuZelimdaUpdate INNER JOIN NekaDrugaTablela ON .... SET NekaKolona = WHERE .... Znaci, uklanja se SELECT <lista kolona> , istio kao kod MS SQL uklanja se rec FROM i umesto FROM se pise rec UPDATE SET se ubacuje posle svih JOIN uslova a pre WHERE Ako znas MS SQL ili bilo koji drugi 'ozbiljan' SQL dijalekt, ova ti sintaksa verovatno izgleda cudno. Ponovo MIcrosoft ![]() Nadam se da je pomoglo. ako nije, nema ti druge nego da zakacis bazu sa test podacima pa da probamo nesto uzivo. ![]() [ Getsbi @ 25.08.2010. 14:37 ] @
Onako kako si postavila pitanje, proizilazi da znaš da ažuriraš polje tabele vrednostima iz neke druge tabele, odnosno umeš da napraviš Update query. Ažuriranje polja tabele iz nekog query-ja je jednako lako kao i isti posao iz tabele. Važno je da shvatiš da je query samo izfiltrirana tabela koja pomaže da imamo bolji uvid u podatke koje želimo da vidimo. Query kao izvor je jednako dobar kao i tabela. U sintaksi SQL iskaza valja za naziv upotrebiti naziv query-ja.
Obrnuto, query kao cilj prilikom ažuriranja je već nešto drugo. Postoje takozvani editabilni query-ji i oni koji to nisu. Znači oni nad kojima se mogu direktno postići izmene u tabeli na kojoj su zanovani i oni koji to ne omogućuju. Editabilni: Select, Find Duplicates, Find Unmatched ............ Needitabilni: 1. Crosstab Query 2. DISTINCT,GROUP BY (oni sa kolonom Total), UNION, 3. Akcioni (Make, Update, Append, Delete jer i ne pokazuju rezultujuće record setove) 4. Ako SELECT query sadrži kolone koje su posledica neke funkcije ( COUNT, AVG....) 5. Ako postoji veza INDETERMINATE (atribut sa atributom, a da nisu ključevi) 6. Setovi podataka nastali kao rezultat korišćenja WHERE klauzule (Ovo se prevazilazi JOIN spojevima). Kad kažem query kao cilj, onda možda i preterujem, jer je stvarni cilj (mesto gde su podaci zaista) tabela. [Ovu poruku je menjao Getsbi dana 26.08.2010. u 12:18 GMT+1] [ jelenakg18 @ 26.08.2010. 06:06 ] @
--0-661430332-1282799200=:41630 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Probala sam vec tako ali mi javlje poruku : 'Operation must use an updateable query.' Ne znam kako to da prevazidjem. Jel postoji neka osobina koju treba da podesim ili sta?.--- On Wed, 8/25/10, Zidar <[email protected]> wrote: From: Zidar <[email protected]>Subject: Re: UPDATE polja u tabeli vrednostima iz napravljenog upita - accesss 2007 [elitesecurity.pracenje.teme]To: [email protected]: Wednesday, August 25, 2010, 6:05 AM Moze naravno, samo je malo zakukuljeno da se napravi takav kveri. Pocni sa SELECT kverijem, u kome ce prva tabele u listi biti ona koju zelis da UPDATE. Onda dodaj ostalo, dok SELECT ne vrati ono sto ti treba. Onda idi u Query Design i kazi 'hocu da ovo bude UPDATE query'. Pojavice ti se jos jedan red koji se zove Update To. Tu upisi sta zelis da se upise u koje kolone one tabele koaj je bila prva u SELECT. Nije bas najjasnije? Ne brini, 99% ljudi se oseca isto tako, i pri tom niko nije glup. Za sve je kriv Microsoft koji je zakomplikovao stavr bez velike potrebe. Lakse je nekad da se napise SQL rukom. Tu nazalost Microsoft ponovo ne pomaze, jer je SQL editor jednostavno ocajan, NotePad je genije za Access SQL editor. Ovako:SIntaksa za UPDATE se dobija iz SELECT izraza. Ako imas ovakav SELECT:SELECT <lista kolona>FROM TabelaKojuZelimdaUpdateINNER JOIN NekaDrugaTablela ON ....WHERE ....U Accesu se od pocetnog selecta, koji je isti kao u MS SQL, ovako pravi UPDATEUPDATE TabelaKojuZelimdaUpdateINNER JOIN NekaDrugaTablela ON ....SET NekaKolona = WHERE ....Znaci, uklanja se SELECT <lista kolona> , istio kao kod MS SQLuklanja se rec FROM i umesto FROM se pise rec UPDATESET se ubacuje posle svih JOIN uslova a pre WHEREAko znas MS SQL ili bilo koji drugi 'ozbiljan' SQL dijalekt, ova ti sintaksa verovatno izgleda cudno. Ponovo MIcrosoft :-)Nadam se da je pomoglo. ako nije, nema ti druge nego da zakacis bazu sa test podacima pa da probamo nesto uzivo.:-)--http://www.elitesecurity.org/p2678436Prijave/odjave: http://www.elitesecurity.org/pracenje#408088Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!esauth:408088:2812c5f5080f684be4e98d7179a5c592 [Ovu poruku je menjao jelenakg18 dana 26.08.2010. u 09:24 GMT+1] [ Getsbi @ 26.08.2010. 11:17 ] @
Možda je bolje da poruku otkucaš direktno na forumu umesto da je šalješ mailom. Ovako je dosta haotično.
PS. Izvinjavam se za obraćanje u pogrešnom rodu. Nisam obratio pažnju na odeljak "Autor". [ vlade011 @ 17.02.2011. 11:19 ] @
Evo jos jednog pitanja nalik pitanju sa pocetka teme. U jednoj tabeli imam polja kolicina i placena kolicina koja azurira korisnik. Trece polje ostatak za placanje treba da azurira racunar. Uspeo sam ovo odraditi pomocu update query-a i radi lepo. Medjutim sta ce biti kada u bazi bude bilo nekoliko hiljada unosa? Access ce racunati svaki i plasim se da ne uspori rad ili jos gore da zaglavi. Moje pitanje je postoji li mogucnost update samo onog recorda kod kog se vrse izmene a ne svih? Kao primer prilazem deo baze u kojoj je izdvojena samo tabela za koju mi treba resenje problema. Nadam se da je problem jasan, ako nije tu sam za razjasnjenja.
Pozdrav. [ banem @ 17.02.2011. 12:08 ] @
Do verzije Accessa 2010 tabela nije imala evente odnosno trigere. U verziji 2010 ima triger za koji vezuješ makro program. Napravi takav makro da, kad se promeni jedno polje makro izračuna drugo polje.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|