insert into select where abfrage dynamisch gestalten


Max-Berater

Mitglied
INSERT INTO rechnungsvorlage (rechnungsnummer)
SELECT renummer FROM revorlage
WHERE aunummer = aunummerneu;

Ich versuche gerade mittels der WHERE Zuweisung die renummer anhand der aunummer und der aunummerneu zuzuweisen.
Jedoch bekomme ich hier einen Fehler. Setze ich jedoch WHERE aunummer ='RE111' etc
Funktioniert es. Aber somit ist dieses ja statisch und ich benötige es dynamisch.
 

Yaslaw

n/a
Moderator
Woher stammt aunummerneu?
In deinem aktuellen SQL ist sie auch aus der Tabelle revorlage.
Und was für ein Fehler bekommst du?
 

Max-Berater

Mitglied
Habe hier einmal ein anderes Beispiel, welches vielleicht mein Anliegen besser verdeutlichen kann

SET SQL_SAFE_UPDATES=0;
UPDATE pp_copy
SET
Typ = 'TESTWERT'
WHERE
pp_copy.Transaktionscode = wawi.`Externe Transaktion-ID`;



Ich möchte folgendes erreichen:

in Feld Typ soll ein dynamischer Wert eingefügt werden aus einer Tabelle wawi mit der Spalte Rechnungsnummer1 - Jetzt ist hier ein statischer Wert vorhanden

Jedoch nur, wenn

WHERE pp_copy.Rechnungsnummer = wawi.Externe Transaktion-ID;

Foldende Fehlermeldung erhalte ich

Error Code: 1054. Unknown column 'wawi.Externe Transaktion-ID' in 'where clause'
 

Yaslaw

n/a
Moderator
Im Where kannst du nur Tabellen ansprechen, die im Select oder im Update aufgeführt sind.
Für ein Update kann das je nach verwendeter Datenbank unterschiedlich gelöst werden.

SQL:
UPDATE pp_copy, wawi
SET  pp_copy.Typ = wawi.Rechnungsnummer1
WHERE
   pp_copy.Transaktionscode = wawi.`Externe Transaktion-ID`;
 

Yaslaw

n/a
Moderator
Du hast 2 Beispiele gemacht. Ich sehe keinen Zusammenhang. Du holst Daten von iregndwoher, ev ginge das einfacher, aber ohne Infos..
Du schreibst, dass meien Lösung nicht passend für dich ist. Aber nicht warum.

Eine Klare ansage was du hast (mit Tabelle und Beispieldateb) und was du damit genau machen willst (Beispieldaten der Ziellösung).

Also in etwa so
Das hab ich:
Code:
Tabelle mitarbeiter
id | firma_id | name
--------------------
1  | 1        | MA1
2  | 1        | MA2
3  | 2        | MA3

Tabelle Firma
id | name
---------------------
1  | firma1
2  | firma2
Nun will ich wissen, welche Firma wieviele Mitarbeiter hat. Das soll dann so aussehen
Code:
firma_id | firma_name | anzahl_mitarbeiter
------------------------------------------
1        | firma1     | 2
2        | firma3     | 1
 

Max-Berater

Mitglied
Tabelle pp_copy

Name | Typ | Betrag | Transaktionscode
_________________________________________________________
Meier | auf Rechnung | 35,99 | 88ABC555XXX
Müller | Vorkasse | 135,92 | 77XX5622210
Becker | Scheck | 8,95 | 88ABC555XXX
Reinbek | auf Rechnung | 85,71 | ABCZZZ5996X
Selman | auf Rechnung | 687,05 | 854GGHHGFWC


Tabelle wawi

Rechnungsnummer | Auftragsnummer | Name Kunde | Transaktionscode
_______________________________________________________________________________
RE150010 | A-83622020 | Meier | 88ABC555XXX
RE150158 | A-5886221 | Müller | 77XX5622210
RE150777 | A-5214 | Becker | 88ABC555XXX
RE152899 | A-58841221 | Reinbek | ABCZZZ5996X
RE148004 | A-877222 | Selman | 854GGHHGFWC


gewünschtes Ergebnis der pp_copy Tabelle

Name | Typ | Betrag | Transaktionscode
____________________________________________________________________
Meier | RE150010 - A-83622020 | 35,99 | 88ABC555XXX
Müller | RE150158 - A-5886221 | 135,92 | 77XX5622210
Becker | RE150777 - A-5214 | 8,95 | 88ABC555XXX
Reinbek | RE152899 - A-58841221 | 85,71 | ABCZZZ5996X
Selman | RE148004 - A-877222 | 687,05 | 854GGHHGFWC

Es soll aus der Tabelle wawi die Rechnungsnummer und Auftragsnummer per CONCAT verkettet werdent werden und dann anhand des Transaktionscode als Identifier
in die Tabelle pp_copy in Feld Typ geschrieben werden.
 

Yaslaw

n/a
Moderator
Super, mit was für einer Datenbank?

Versuch es mal mit (Kann schreibfehler enthalten)
SQL:
update pp_copy as c, wawi as w
set c.typ = concat(w.rechnungsnummer, ' - ', w.auftragsnummer)
where c.transaktionscode = w.transactionscode
 

Neue Beiträge