WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL statement > Daten importieren (http://www.wcm.at/forum/showthread.php?t=145343)

reichr 21.09.2004 10:05

SQL statement > Daten importieren
 
hallo!

table1
art.nr, cat1, cat2, cat3

table2
art.nr, cat1, cat2, cat3 ...


nun möchte ich folgendes:
in der ersten tabelle sind cat1 - 3 befüllt
diese möchte ich jetzt auch in der 2. tabelle lt. der 1. befüllen.

dafür bräucht ich eure hilfe..

in der 2. tabelle ist nur die art.nr befüllt
>also lt. art.nr sollen die spalten in der 2. tabelle befüllt werden

(MSSQL SERVER 2000)

käptn 21.09.2004 11:31

Check mal die MSSQL-Docs ob UPDATEs auf mehrere Tabellen unterstützt werden...

Code:

UPDATE
  t1, t2
SET
 t2.cat1 = t1.cat,
 t2.cat2 = t1.cat2,
 t2.cat3 = t2.cat3
WHERE t1.id = t2.id;

~

K@sperl 21.09.2004 11:47

Müßte IMHO auch so gehen:
SELECT cat1, cat2, cat3 INTO table2 FROM table1;

RStAstl 21.09.2004 11:49

Code:

UPDATE table2
INNER JOIN table1
ON table2.art_nr = table1.art_nr
SET table2.cat1 = table1.cat1
  , table2.cat2 = table1.cat2
  , table2.cat3 = table1.cat3
;


Anmerkung: Hier wird (richtigerweise) ein der Verbung der beiden Tabellen gebildet (Join) und nicht das kartesische Produkt verwendet.
Auch werden die richtigen Spalten aus der richtigen Tabelle genommen. (Problem von käptn)

Beim zweiten Lösungsvorschlag wird die Tabelle table2 vorher gelöscht (bzw. muss gelöscht werden).


PS: "art.nr" ist IMHO kein gültiger Spartenname. -> Unterstrick!

käptn 21.09.2004 12:02

Wohl die WHERE Klausel übersehen?

~

RStAstl 21.09.2004 12:28

@käptn
Ja - hab die WHERE übersehen *ups*

Hab mein SQL schon vorher geschrieben aber erst nach dir gepostet.

Jedenfalls hat er nun eine Lösung.

JoergStueger 21.09.2004 13:28

Mahlzeit zusammen!

Misch mich hier mal als Chris' Kollege kurz ein.

Das Statement:

UPDATE WaBsAr
SET WaBsAr.sGkCd1 = WaBsArDaten.Cat1
WHERE WaBsAr.sBsArNr = WaBsArDaten.ArtNr

Liefert folgende Fehlermeldung:

Server: Nachr.-Nr. 107, Schweregrad 16, Status 3, Zeile 1
Das Spaltenpräfix 'WaBsArDaten' stimmt mit keinem in der Abfrage verwendeten Tabellen- oder Aliasnamen überein.
Server: Nachr.-Nr. 107, Schweregrad 16, Status 1, Zeile 1
Das Spaltenpräfix 'WaBsArDaten' stimmt mit keinem in der Abfrage verwendeten Tabellen- oder Aliasnamen überein.

Kann der SQL2000 etwa solche Update Statement nicht?

LG
Joerg

JoergStueger 21.09.2004 13:34

Kommando zurück!!!

Ein RTFM hilft immer wieder, so funkts:

UPDATE WaBsAr
SET WaBsAr.sGkTlCd12 = WaBsArDaten.Cat3
FROM WaBsAr, WaBsArDaten
WHERE WaBsAr.sBsArNr = WaBsArDaten.ArtNr

LG
Joerg


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag