Inkrementacja w INSERT
Benek - 29-04-2006 00:14
Inkrementacja w INSERT
nie wiem jak zrobic cos takiego na SQL Serverze 2000: mam tabele z dwiema kolumnami: ID i NAZWA
teraz chce dodac wiersze ale zaciagniete z innej tabeli. Np INSERT INTO Tabela (NAZWA) SELECT ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
to tylko dodaje nazwe, ale chcialbym zeby automatycznie numerowaly mi sie rekordy od 1 do tylu ilu dodaje mi tych rekordow(np. 10). mniej wiecej ma to tak wygladac:
ID | Nazwa -------------|------------ 1 | jakasnazwa1 2 | jakasnazwa2 3 | jakasnazwa3 4 | jakasnazwa4 5 | jakasnazwa5 6 | jakasnazwa6 7 | jakasnazwa7 8 | jakasnazwa8 9 | jakasnazwa9 10 | jakasnazwa10
jakas nazwa to jest nazwa wyeksportowana z Tabela2
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Marcin Miga - 29-04-2006 00:14
Benek wrote:
> nie wiem jak zrobic cos takiego na SQL Serverze 2000: > mam tabele z dwiema kolumnami: ID i NAZWA >
Jeśli chcesz nadać w miejscu ID własną numerację, to musisz skorzystać z funkcji IDENTITY. Przykład jak to wykonać (przez tabelę przejściową, ale bez kursorów)
/* create table #Tabela2(id_tab int not null, nazwa varchar(20) not null) create table #Tabela(id int not null identity(1,1), nazwa varchar(20) not null)
declare @id int declare @nazwa varchar(20)
set nocount on set @id = 1
while @id<20 begin set @nazwa = 'jakasnazwa' + ltrim(str(@id)) insert into #Tabela2 values(@id, @nazwa) set @id = @id +1 end */
select identity(int, 1,1) id, nazwa into #TemporaryTable from #Tabela2 where id_tab between 1 and 10
set identity_insert #Tabela on
insert into #Tabela(id, nazwa) select * from #TemporaryTable
set identity_insert #Tabela off
drop table #TemporaryTable
pozdrawiaMM -- Marcin M. Miga "More matter with less art"
Bastion - 01-05-2006 00:02
Użytkownik "Benek" <overkill@vp.pl> napisał w wiadomości news:5124.000000ec.44520260@newsgate.onet.pl... > nie wiem jak zrobic cos takiego na SQL Serverze 2000: > mam tabele z dwiema kolumnami: ID i NAZWA > > teraz chce dodac wiersze ale zaciagniete z innej tabeli. Np > INSERT INTO Tabela (NAZWA) > SELECT ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10 >
Sprawdz czy zadziala cos takiego:
INSERT INTO Tabela (id,NAZWA) SELECT Number(*), ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
Takie rozwiazanie ma taka wade, ze za kazdym razem bedzie dodawal id z zakresu 1-10
Wiec moze cos takiego
INSERT INTO Tabela (id,NAZWA) SELECT (select Number(*)+max(id) form Tabela), ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
Inne rozwiazanie to ustawienie atrybutu pola tabela.id na "auto incremet" tak robilem kiedys w bazie paradoksa. Czy mozna to zrobic w SQL Serverze 2000?
Bastion - 01-05-2006 00:02
Użytkownik "Bastion" <paradygmat@bez_maila.pl> napisał w wiadomości news:e32akv$57j$1@atlantis.news.tpi.pl... > > > INSERT INTO Tabela (id,NAZWA) > SELECT (select Number(*)+max(id) form Tabela), ID_TAB > FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
Sorrki, bzdura, to powinno wygladac tak:
INSERT INTO Tabela (id,NAZWA) SELECT (select count(*) from Tabela), ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
lub tak:
INSERT INTO Tabela (id,NAZWA) SELECT (select max(id)+1 form Tabela), ID_TAB FROM Tabela2 WHERE ID_TAB BETWEEN 1 AND 10
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
Insert do tabeli danymi z innej tabeli Firebird
[mssql] insert do tabeli na podstawie danych z innej tabeli
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
Import faktur do Insert Subiekt GT oraz Wapro Wf-Mag z innego programu
=?iso-8859-2?Q?=5BMySQL=5D_i_MS_Acccess_insert_do_dw=F3ch_tab el?=
[MSSQL 2000] czas wykonywania instrukcji INSERT - czy zalezy od ilosci danych w tabeli?
=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?=
=?iso-8859-2?q?Insert_tabel_z_r=F3=BFnych_baz?=
=?iso-8859-2?q?MySQL_-_insert_do_dw=F3ch_tabel?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.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 |
|