MySQL Datenspalte in andere Tabelle Kopieren

Hallo,

ich bin im Bereich SQL noch sehr grün und bräuchte mal Hilfe.

Ich habe eine Tabelle die ich mit dem Befehl
SELECT * FROM art_liefer
ansehen kann.
Diese Tabelle enthält unter anderem die Spalten „bestellnr“ und „artnr“

Ich habe eine weitere Tabelle die ich mit dem Befehl
SELECT * FROM art
ansehen kann.
Diese Tabelle enthält unter anderem die Spalten „herstnr“ und „artnr“

Die Inhalte der Spalte „artnr“ ist in beiden Tabellen identisch.
Ich möchte nun über die Inhalte der Spalte „bestellnr“ die Inhalte der Spalte „herstnr“ drüberbügeln.

Kann mir jemand die Befehle dazu mitteilen?

MfG  Frank

Was bitte ist „drüberbügeln“? Du kannst entweder die eine Liste abfragen und die andere „anhängen“ (SELECT mit LEFT JOIN) um Werte aus den Tabellen kombiniert anzuzeigen, oder Werte aus der einen Tabelle in die andere kopieren (UPDATE mit LEFT JOIN).

Hallo Frank^^

Drüberbügeln?

Das gleichzeitige Anzeigen beider Inhalte geht mit
Select a.artnr, b.herstnr, a.bestellnr from art_liefer as a, art as b where a.artnr=b.artnr

Möchtest du alle bestellnr mit den passenden herstnr ersetzen geht das mit
Update art_liefer as a set a.bestellnr = (Select b.herstnr from art as b where b.where a.artnr=b.artnr)

Möchtest du die Spalte hinzufügen, kannst du das mittels
ALTER TABLE art_liefer ADD herstnr INT NULL
um eine neue Spalte zu erstellen und
Update art_liefer as a set a.herstnr = (Select b.herstnr from art as b where b.where a.artnr=b.artnr)
um die Spalte mit den Inhalten der anderen Tabelle zu füllen.

Das lässt sich natürlich auch über Left Join machen, ich finde subqueries aber etwas intuitiver. Join is in then meisten Fällen etwas schneller, aber in deinem Fall, sollte das im Bereich von Millisekunden liegen^^

Oder meintest du etwas ganz anderes?

Mit freundlichen Grüßen, Julian

Hallo

Drüberbügeln?

Werte Ersetzen.

Möchtest du alle bestellnr mit den passenden herstnr ersetzen
geht das mit
Update art_liefer as a set a.bestellnr = (Select b.herstnr
from art as b where b.where a.artnr=b.artnr)

Ber der Verwendung gibt er einen syntax fehler zurück.

ODBC 3.51 … mysqld-5.1.63 …error in SQL syntax…near „a.artnr=b.artnr)“

Vorschläge? Fehlt das villeicht ein Komma?

Das gleichzeitige Anzeigen beider Inhalte geht mit
Select a.artnr, b.herstnr, a.bestellnr from art_liefer as a, art as b where a.artnr=b.artnr

Das Funktioniert.

MfG Frank

Update art_liefer as a set a.bestellnr = (Select b.herstnr
from art as b where b.where a.artnr=b.artnr)

Update art_liefer as a set a.bestellnr = (Select b.herstnr from art as b where a.artnr=b.artnr)

Funktioniert.
Danke.

MfG Frank

also war schon ganz gut der Ansatz von Julian, funktioniert nur leider so nicht. Weil a) Schreibfehler und b) was wenn die artnr öfter vorkommt?

also index ergänzen:
in Tabelle art das Feld aid (als primary key) und
in Tabelle art_liefer das Feld alid, wobei ich davon ausgehe dass du sowas schon drin hast.

dann funktioniert das nämlich so:

UPDATE art_liefer al SET al.bestellnr = (SELECT a.herstnr FROM art a WHERE al.alid = a.aid)

Erläuterungsversuch:Ändere Tabelle art_liefer und ersetze dabei die bestellnr mit dem wert herstnr aus Tabelle art wo die indices übereinstimmen.

Tja, da brauche ich ja nur noch auf meine Vorredner zu verweisen. Bei denen brauchst du ja eigentlich fast nur noch abzuschreiben.