Autor Beitrag
bbfan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: Fr 21.04.06 10:35 
Hallo Leute!

Wie kann ich mehrere INSERT zu einem zusammenfügen?



ausblenden SQL-Anweisung
1:
2:
3:
INSERT INTO (TAB1,TAB2) VALUES (1,2);
INSERT INTO (TAB1,TAB2) VALUES (1,2);
INSERT INTO (TAB1,TAB2) VALUES (1,2);


sollte nachher wie folgt aussehen:
ausblenden SQL-Anweisung
1:
INSERT INTO (TAB1,TAB2) VALUES (1,2),(1,2),(1,2);					


Jedefalls geht das so mit mySQL. Aber wie sieht das bei ADO / msSQL aus?

Viele Grüße!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 21.04.06 11:40 
So geht das nicht. Auch mit mySQL nicht, denke ich, denn Du hast die Tabelle vergessen, aber egal. :wink:
Bei echten DBMS nimmt man dafür eine Transaktion (die ja mySQL < 5.x nicht kennt):
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
Begin Transaction
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
commit transaction

oder auch so:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
Insert into Tabelle
  select 1,2
    union
  select 1,2
    union
  select 1,2

_________________
Na denn, dann. Bis dann, denn.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 21.04.06 13:09 
user profile iconalzaimar hat folgendes geschrieben:
So geht das nicht. Auch mit mySQL nicht, denke ich, denn Du hast die Tabelle vergessen, aber egal. :wink:


Trotzdem kann, selbst MySQL 3 bereits die oben (nur syntaktisch unvollständige Version ausführen):
ausblenden SQL-Anweisung
1:
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2),(1,2),(1,2);					


Inwiefern das die Teile von M$ kapieren steht dabei auf einem ganz anderen Blatt, da überlass ich mal user profile iconalzaimar das Feld ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 21.04.06 14:28 
Na ja, B€nB€, mySQL kann nun mal eben keine unvollständige SQL-Befehle ausführen, also auch kein "INSERT INTO (bla, Foo) ... " Darauf wollte ich doch hinaus, aber das hast Du ja bestimmt bemerkt. Hinterher vermutlich erst, aber immerhin.

_________________
Na denn, dann. Bis dann, denn.
Amiga-Fan
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 534



BeitragVerfasst: Fr 21.04.06 14:42 
bei oracle geht folgendes:

insert into tabelle1 select spalte1, spalte2 from tabelle2. Dann macht er ein select auf tabelle2 und fügt die gefundenen zeilen mit den gewünschten spalten in tabelle 1 ein.

_________________
- Leg dich nie mit einem Berufsprogrammierer an
- Wahre Profis akzeptieren keine einfachen Lösungen
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 21.04.06 14:49 
user profile iconalzaimar hat folgendes geschrieben:

oder auch so:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
Insert into Tabelle
  select 1,2
    union
  select 1,2
    union
  select 1,2

_________________
Na denn, dann. Bis dann, denn.