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.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[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.pldoc.pisz.plpdf.pisz.planette.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 |
|