Einzelnen Beitrag anzeigen
  #2  
Alt 08.09.2010, 07:39:43
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Abfrage mehrer Daten in eine Spalte schreiben.

So ganz klar ist mir die Frage nicht geworden, deshalb habe ich mal verschiedene Antworten ausprobiert. Die Frage ist eigentlich ob:

a) Mehrere Datensätze auf einmal geändert werden sollen ? (UPDATE)
b) Daten in eine leere Tabelle kopiert werden sollen (INSERT .. SELECT )


Code:
CREATE TABLE tabelle1 (
 id INT NOT NULL,
 spalte1 VARCHAR(50) NOT NULL,
 spalte2 VARCHAR(50) NOT NULL,
 
 PRIMARY KEY (id)
);


CREATE TABLE tabelle2 (
 id INT NOT NULL,
 spalte1 VARCHAR(50) NOT NULL,
 spalte2 VARCHAR(50),
 
 PRIMARY KEY (id)
);

CREATE TABLE tabelle3 (
 spalte2 VARCHAR(50)
);


INSERT INTO tabelle1 VALUES
( 1 , 'wert11', 'wert12' ),
( 2 , 'wert21', 'wert22' ),
( 3 , 'wert31', 'wert32' );

INSERT INTO tabelle2 VALUES
( 1 , 'wert11', NULL ),
( 2 , 'wert21', NULL ),
( 3 , 'wert31', NULL );


/* Single Row Update - eine Spalte eines vorhandenen Datensätzes wird geändert */
UPDATE tabelle2
   SET spalte2 = ( SELECT spalte2 FROM tabelle1
                    WHERE spalte1 = 'wert21' )
 WHERE spalte1 = 'wert21'; 


SELECT * FROM tabelle2;
+----+---------+---------+
| id | spalte1 | spalte2 |
+----+---------+---------+
|  1 | wert11  | NULL    |
|  2 | wert21  | wert22  |    <===
|  3 | wert31  | NULL    |
+----+---------+---------+
3 rows in set (0.00 sec)

mysql>
 
 
/* Multi Row Insert - neue Datensätze werden eingefügt */ 
INSERT INTO tabelle3
SELECT spalte2 FROM tabelle1
 WHERE spalte1 LIKE 'wert%';
 
SELECT * FROM tabelle3; 

+---------+
| spalte2 |
+---------+
| wert12  |
| wert22  |
| wert32  |
+---------+
3 rows in set (0.00 sec)

mysql>
Vielleicht ist ja was passendes dabei.

Grüße
Thomas
Mit Zitat antworten