ďťż
 
Inkrementacja w INSERT ďťż
 
Inkrementacja w INSERT
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

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • red-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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com