ďťż
 
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= ďťż
 
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=



daro - 28-02-2006 13:11
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
  mam tabelę w której mam między innymi 5 kolumn: k1, k2,k3,k4,k5;
w kolumnach tych trzymam kilka wartości (maksymalnie 5), zera (wartość
domyślna) nie są dla mnie żadną wartością...; innymi słowyy kolumny
k1-k5 są dla mnie 'pojemnikiem' do trzymania 'kilku wartości';
wartości są 'wyrównywane do lewej'- jeżeli trzymam 2 wartości to: k1, k2
są niezerowe a w k3,k4 i k5 są zera;
tabela jest jaka jest, nie mogę zmienić struktury itp;

muszę napisać w skrócie coś takiego: usunWartosc(int @wartosc) ,która
będzie robiła to co ma w nazwie (czyli w komórkę w której występuje
@wartosc wyzeruje) i w razie konieczności przesunie wartości z kolejnych
kolumn 'w lewo'

jak to najłatwiej/najszybciej/żeby 'sprawnie' działało zrobić ? myślałem
o kursorach, ale niewiele o nich wiem...

declare xxx_crsr cursor
for select k1, k2, k3, k4, k5
from tabela WHERE (k1 = @wartosc or k2 = @wartosc or ...itd)
for update --of k1, k2, k3, k4, k5

ktoś może coś poradzić ?

pozdrawiam
Darek





Sebastian - 28-02-2006 13:11

 
Użytkownik "daro" <d102@o2.pl> napisał w wiadomości
news:dtkl8j$onp$1@achot.icm.edu.pl...
> mam tabelę w której mam między innymi 5 kolumn: k1, k2,k3,k4,k5;
> w kolumnach tych trzymam kilka wartości (maksymalnie 5), zera (wartość
> domyślna) nie są dla mnie żadną wartością...; innymi słowyy kolumny k1-k5
> są dla mnie 'pojemnikiem' do trzymania 'kilku wartości';
> wartości są 'wyrównywane do lewej'- jeżeli trzymam 2 wartości to: k1, k2
> są niezerowe a w k3,k4 i k5 są zera;
> tabela jest jaka jest, nie mogę zmienić struktury itp;
>
> muszę napisać w skrócie coś takiego: usunWartosc(int @wartosc) ,która
> będzie robiła to co ma w nazwie (czyli w komórkę w której występuje
> @wartosc wyzeruje) i w razie konieczności przesunie wartości z kolejnych
> kolumn 'w lewo'
>
> jak to najłatwiej/najszybciej/żeby 'sprawnie' działało zrobić ? myślałem o
> kursorach, ale niewiele o nich wiem...
>
>
> declare xxx_crsr cursor
> for select k1, k2, k3, k4, k5
> from tabela WHERE (k1 = @wartosc or k2 = @wartosc or ...itd)
> for update --of k1, k2, k3, k4, k5

Moze cos takiego, bedzie chyba szybsze od kursora

UPDATE tabela SET k1 = NULL WHERE k1 = @wartosc
UPDATE tabela SET k2 = NULL WHERE k1 = @wartosc
UPDATE tabela SET k3 = NULL WHERE k1 = @wartosc
UPDATE tabela SET k4 = NULL WHERE k1 = @wartosc
UPDATE tabela SET k5 = NULL WHERE k1 = @wartosc

UPDATE tabela SET k1 = k2, k2 = NULL WHERE k1 IS NULL AND k2 IS NOT NULL
UPDATE tabela SET k2 = k3, k3 = NULL WHERE k2 IS NULL AND k3 IS NOT NULL
UPDATE tabela SET k3 = k4, k4 = NULL WHERE k3 IS NULL AND k4 IS NOT NULL
UPDATE tabela SET k4 = k5, k5 = NULL WHERE k4 IS NULL AND k5 IS NOT NULL
Pozdrawiam

Sebastian




daro - 28-02-2006 13:11

  > Moze cos takiego, bedzie chyba szybsze od kursora
>
> UPDATE tabela SET k1 = NULL WHERE k1 = @wartosc
> UPDATE tabela SET k2 = NULL WHERE k1 = @wartosc
> UPDATE tabela SET k3 = NULL WHERE k1 = @wartosc
> UPDATE tabela SET k4 = NULL WHERE k1 = @wartosc
> UPDATE tabela SET k5 = NULL WHERE k1 = @wartosc
>
> UPDATE tabela SET k1 = k2, k2 = NULL WHERE k1 IS NULL AND k2 IS NOT NULL
> UPDATE tabela SET k2 = k3, k3 = NULL WHERE k2 IS NULL AND k3 IS NOT NULL
> UPDATE tabela SET k3 = k4, k4 = NULL WHERE k3 IS NULL AND k4 IS NOT NULL
> UPDATE tabela SET k4 = k5, k5 = NULL WHERE k4 IS NULL AND k5 IS NOT NULL
> Pozdrawiam
>
> Sebastian
>
>

dzięki!!
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [oracle] - Oracle SQL Developer - co to jest SID? [MS SQL + kontakty outlook]CZy kontakty moge być zewnętrzne? [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ? [MS SQL 2000] - wielkosc strony danych a wielkosc klastra dyskowego konkurs SQL Injection - 10 PLN na GSM dla pierwszej osoby, ktora dostanie sie do bazy Re: Gdzie mozna jeszcze kupic Microsoft SQL 2000 Enterprise Edition?? ustawianie uprawnien uzytkownika SQL 2005 serwer express ORAZ w msde [SQL] W jaki sposób zwrócić wiersze które NIE znadują się w 2 pozostałych kolumnach [sybase] migracja z SQL Aynwhere 9 na ASE 15 Express Edition - dasie? papier pakunkowy
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • anette.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com