Avatar billede faxe Nybegynder
04. maj 2009 - 11:51 Der er 8 kommentarer og
2 løsninger

Kopier en linje til den samme table

Hej Eksperter

Jeg skal kopier en linje fra en table til den samme table.

Jeg kan ikke finde nogle komandoer hvor man kan gøre det direkte, men har fundet ud af at man kan kopier til en anden table og derefter sætte det ind igen.

INSERT INTO table2
SELECT * FROM table1
WHERE id=1

Mit problem er at når det så skal tilbage igen får det det samme Id som den gamle!

INSERT INTO aktiviteter_frie_felter_copy SELECT * FROM aktiviteter_frie_felter WHERE Id_Frie_felter=1;

Nogle der kan hjælpe

Venlig hilsen
Stig
Avatar billede jeffe Nybegynder
04. maj 2009 - 12:06 #1
Du kan gøre det ved at nævne alle andre felter end id-feltet....Altså i stedet for *

Du skal naturligvis helst have autoincrement på id-feltet.
Avatar billede faxe Nybegynder
04. maj 2009 - 12:14 #2
Det har jeg og så prøvet så kommer denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]Column count doesn't match value count at row 1


Så så den sådan ud:
INSERT INTO aktiviteter_frie_felter_copy SELECT Id_Sub_Frie_felter, Id_Aktivitet, Type, Rate, Kontonr, Offentlig, Pris, Rabat, Startdato, Slutdato, Notat, Navn, Fast_antal, Min, Max, Select_type, Beskrivelse, Obligatorisk, Alder_start, Alder_slut, Oprettet_Id, Oprettet_Dato FROM aktiviteter_frie_felter WHERE Id_Frie_felter=1;
Avatar billede stinejh1980 Nybegynder
04. maj 2009 - 12:45 #3
Din select skal være uden dit id felt.

Du skal gerne sætte alle tabeller i en database til at autogenerere RecordID.
Avatar billede faxe Nybegynder
04. maj 2009 - 12:59 #4
Det har jeg også...
Id_Frie_felter er mit Id felt
Avatar billede stinejh1980 Nybegynder
04. maj 2009 - 13:09 #5
Det er fordi du jo selvfølgelig skal bruge dit idfelt for at lave filter, men måske skulle du bare lave en ekstra kolonne i din nr2 database hvor du indsætter FK(id fra din nr1 tabel)

Ved at skrive :
INSERT INTO aktiviteter_frie_felter_copy SELECT Id_Sub_Frie_felter, Id_Aktivitet, Type, Rate, Kontonr, Offentlig, Pris, Rabat, Startdato, Slutdato, Notat, Navn, Fast_antal, Min, Max, Select_type, Beskrivelse, Obligatorisk, Alder_start, Alder_slut, Oprettet_Id, Oprettet_Dato FROM aktiviteter_frie_felter WHERE Id_Frie_felter=1;

Tror din statemnet at den også skal indsætte ID i din tabel nr 2
Avatar billede arne_v Ekspert
04. maj 2009 - 13:26 #6
Hvis select ikk eindeholder en kolonne skal alle de andre kolonne navne angives i insert:

INSERT INTO tabel (kol2,kol3,kol4) SELECT kol2,kol3,ko4 FROM tabel
Avatar billede faxe Nybegynder
04. maj 2009 - 13:27 #7
Mit problem er så at den så skal sættes tilbage igen.... Og hvordan gør jeg så lige det?
Avatar billede faxe Nybegynder
04. maj 2009 - 13:52 #8
Arne_v

Det var lige det der skulle til.... :-)
Avatar billede faxe Nybegynder
06. maj 2009 - 16:45 #9
Arne_v Vil du ikke ligge et svar så kan i dele point?
Avatar billede arne_v Ekspert
06. maj 2009 - 17:58 #10
gerne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester