Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Azuriranje sloga SQL

[es] :: Baze podataka :: Azuriranje sloga SQL

[ Pregleda: 3344 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

1440

Član broj: 21311
Poruke: 30
*.vdial.verat.net



Profil

icon Azuriranje sloga SQL10.03.2004. u 08:18 - pre 245 meseci
Nisam radio SQL upite pa molim za pomoc.

1.
Zeleo bih da azuriram "slog" (jedan) u tabeli
a da tabelu procitam sekvencijalno.

Nesto kao:

WHILE !EOF()
nesto=vrednost polja iz tekuceg sloga
...
Izracunaj nesto
...
NestoNovo=neka izracunata vrednost
...
// Ovde zelim da azuriram samo jedan slog
UPDATE tabela SET polje1 = 'NestoNovo' WHERE polje ='nesto')
// medjutim UPDATE mi zavrsava petlju
END
Probao sam sa ACCESS-om i MSSQL-om preko ODBC-a

2. Takodje sam pokusao u access-u i Mssql-u da nadjem
komandu kako da nadjem broj sloga ali nisam uspeo
Nesto kao RECORD RECORDNUMBER ili slicno
Potrebno mi je da selektujem samo odredjene slogove
gde mi nije poznata njihova vrednost
Na primer
SELECT polje1 FROM table WHERE brojsloga>10 .and. brojsloga<15

Hvala unapred,
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 10:42 - pre 245 meseci
Možeš da izvršiš enumeraciju slogova pri čemu bi kreirao dodatnu kolonu (samo u view-u , ne i u tabeli; ili da koristiš privremenu tabelu koja bi imala jedno polje kao identity (autonumber) i još jedno u koju bi prepisao primarni ključ iz druge tabele) sa rednim brojem zapisa ili da koristiš kursore na SQL serveru. Što se prvog dela tiče, bilo je već govora o tome ovde na forumu (Baze podataka, Baze podataka::Access) pa pogledaj malo. A upotreba kursora je malo šira tema, ali ne i preterano komplikovana - pogledaj Books Online što ide uz SQL Server instalaciju.

Koje okruženje tačno koristiš?

[Ovu poruku je menjao degojs dana 10.03.2004. u 06:42 GMT]
Commercial-Free !!!
 
Odgovor na temu

barcode

Član broj: 10297
Poruke: 196
*.242.EUnet.yu



+81 Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 10:59 - pre 245 meseci
To bi bilo nesto kao:

Code:

do while not rs.eof

  nesto=rs!neko_polje

  if (stagod) then
    rs.edit
    rs!neko_polje=nesto_drugo
    rs.update
  end if

  rs.movenext

loop


mada je mnoooogo brze:

Code:

ime_konekcije.execute "UPDATE ime_tabele SET neko_polje=nesto_drugo WHERE  neko_polje=nesto"


a sto se tice selektovanja od 10 do 15 reda, malo je zeznuto sto na mssql-u ne postoji komanda LIMIT (neka malo uce od MySQL-a), nego samo TOP, pa bi procedura bila sledeca (ima vise nacina, ali mislim da je ovaj definitivno najbrzi):

Code:

sql="SELECT TOP 15 neko_polje FROM neka_tabela"
rs.source=sql
rs.open
neki_array=rs.getrows
rs.close


I onda radis dalje sa vrednostima koje imas u 'neki_array'


 
Odgovor na temu

1440

Član broj: 21311
Poruke: 30
*.vdial.verat.net



Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 11:58 - pre 245 meseci
Citat:
degojs:
Možeš da izvršiš enumeraciju slogova pri čemu bi kreirao dodatnu kolonu (samo u view-u , ne i u tabeli; ili da koristiš privremenu tabelu koja bi imala jedno polje kao identity (autonumber) i još jedno u koju bi prepisao primarni ključ iz druge tabele) sa rednim brojem zapisa ili da koristiš kursore na SQL serveru. Što se prvog dela tiče, bilo je već govora o tome ovde na forumu (Baze podataka, Baze podataka::Access) pa pogledaj malo. A upotreba kursora je malo šira tema, ali ne i preterano komplikovana - pogledaj Books Online što ide uz SQL Server instalaciju.

Koje okruženje tačno koristiš?

[Ovu poruku je menjao degojs dana 10.03.2004. u 06:42 GMT]


Lutajuci po helpovima pomislio sam da ne postoji RecordNumber ili slicna funkcija koja bi davala tacan broj pozicije. Sad sam dobio potvrdan odgovor. I pomislio sam da napravim nesto slicno sto mi predlazes. Hvala.
A sto se prvog dela tice tj foruma cini mi se da sam prelistao 'gotovo svaku' temu
ali nisam naleteo na ono sto me zanima. Moracu ponovo da potrazim.
Hvala jos jednom
 
Odgovor na temu

1440

Član broj: 21311
Poruke: 30
*.vdial.verat.net



Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 12:12 - pre 245 meseci
Citat:
barcode:
To bi bilo nesto kao:

Code:

do while not rs.eof

  nesto=rs!neko_polje

  if (stagod) then
    rs.edit
    rs!neko_polje=nesto_drugo
    rs.update
  end if

  rs.movenext

loop


mada je mnoooogo brze:

Code:

ime_konekcije.execute "UPDATE ime_tabele SET neko_polje=nesto_drugo WHERE  neko_polje=nesto"


a sto se tice selektovanja od 10 do 15 reda, malo je zeznuto sto na mssql-u ne postoji komanda LIMIT (neka malo uce od MySQL-a), nego samo TOP, pa bi procedura bila sledeca (ima vise nacina, ali mislim da je ovaj definitivno najbrzi):

Code:

sql="SELECT TOP 15 neko_polje FROM neka_tabela"
rs.source=sql
rs.open
neki_array=rs.getrows
rs.close


I onda radis dalje sa vrednostima koje imas u 'neki_array'





Petlja mora da postoji jer svaki slog moram da procitam sekvencijalno i da pomocu
CASE naredbe za razlicite slucajeve nesto izracunam pa tek da azuriram slog.
Problem se javlja kad uradim UPDATE, petlja zavrsi pre vremena
Radio sam sa:
SELECT polja FROM Tabela
WHILE !EOF()
....
UPDATE
END
Nisam bas razumeo sta mi zelis reci sa kodom gore. Ne shvatam ono EDIT.

Sto se tice drugog dela odgovora mislim da me nisi shvatio.

Zelim da se pozicioniram na slog broj 15, pa onda na 333, pa na slog broj 1011.
Ili da ucitam slogove of pozicije od 454 do 460
Nisam siguran da mi naredbe TOP ili limit mogu pomoci.

Cini mi se da je DEGOJS dao pravo objasnjenje.

Ako si me sada shvatio sta zelim i imas ideu molim te pomazi, dok ja prosetam po forumu za starim odgovorima.

Hvala,


 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 12:12 - pre 245 meseci
http://www.elitesecurity.org/tema/27669

http://www.elitesecurity.org/tema/25682

Citat:
Nisam siguran da mi naredbe TOP ili limit mogu pomoci.

Mogu, a i to smo popricali na ovim gore temama na koje ti ostavljam linkove.


Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Azuriranje sloga SQL10.03.2004. u 13:40 - pre 245 meseci
Ukratko, evo resenja na brzinu, npr. ako ti treba 3. zapis iz tabele:

SELECT TOP 1 * FROM
(SELECT TOP 3 *
FROM Table1 ORDER BY AutoID ASC)
ORDER BY AutoID DESC;

Dakle, samo postavi broj zapisa koji ti treba umesto broja 3 u primeru. TOP 1 iz vanjskog SELECT-a ne menjas. Ova tabela bi podrazumevala da imas jedno polje ("AutoID") koje je identity (tj. AutoNumber u Accessu). Ovo polje bi moglo dodatno biti primarni kljuc, ili bar indeksirano, kako bi sve bilo brze.
Commercial-Free !!!
 
Odgovor na temu

[es] :: Baze podataka :: Azuriranje sloga SQL

[ Pregleda: 3344 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.