Maria DB - Left Join identischer Datentyp Fehler 1060

Max-Berater

Erfahrenes Mitglied
Beim Verbinden zweier Tabellen bekomme ich aktuell den Fehler 1060
/* SQL Fehler (1060): Duplicate column name 'Typ' */

CREATE TABLE EMP_temp
AS (SELECT *
FROM EMP2
LEFT JOIN EMP
ON EMP2.Transaktionscode = EMP.Bestellnummer);

Wie kann ich die Spalte Typ in der gejointen Tabelle umbenennen, so dass es funktioniert?
 
mit * nimmst du alle Felder von allen Tabellen. Wenn TYP in beidenTabelen vorhanden ist, gibt das Proleme.
SQL:
CREATE TABLE EMP_temp
AS (SELECT EMP2.*, EMP.FELD1, EMP.FELD2
FROM EMP2
LEFT JOIN EMP
ON EMP2.Transaktionscode =  EMP.Bestellnummer);
 
Ich würde mir erst die Frage stellen, wofür du diese temp. Tabelle brauchst.
In 99% aller Fälle braucht man das nämlich nicht (Tabelle erstellen, etwas damit machen, nur um sie später wieder zu droppen).
Erklär uns mal, wofür du das brauchst. Vielleicht gibt es ja ne elegantere Lösung.
 
Ich versuche ein Feld in der Tabelle per Update und Case zu füllen.
Habe mir wie zu sehen die

1646850026811.png

UPDATE EMPERIOR AS E2T,
EMP_temp
SET E2T.Name =
CASE
WHEN EMP_temp.Referenznummer LIKE '%FEE' AND EMP_temp.Beschreibung LIKE'%Anzeigengebühr%' THEN EMP_temp.Beschreibung

ELSE 'ffff'
END;

Als Ergebnis erhalte ich das ffff - und nicht die Feldwerte.

Ich finde leider den Fehler hier nicht. Habe sowas in anderen Abfragen schon öfter gemacht.
 
Kann es ggf. sein, dass er die per CREATE TABLE EMP_temp erzeugte Tabelle, welche vor dem Update Befehl erstellt wurde nicht findet, bzw. darauf nicht zugreifen kann? Nur so als Gedankengang
 
Mach doch mal ne SELECT und nutz das WHEN als WHERE
dann siehste ja, ob du irgendwo nen bock hast

SELECT Beschreibung FROM EMP_temp WHERE Referenznummer LIKE '%FEE' AND Beschreibung LIKE '%Anzeigengebühr%'

der Klassiker bei sowas ist meist das Prozent an der falschen Stelle oder Gross/Kleinschreibung beim LIKE

EDIT: Dir ist klar, dass du nach Referenznummern suchst, welche auf FEE ENDEN?

EDIT2: Wenn ich mir das anschaue, würde ich eher ne VIEW als ne temp-Table erstellen
SQL:
CREATE VIEW IF NOT EXISTS MeineView
AS (SELECT EMP2.*, EMP.FELD1, EMP.FELD2
FROM EMP2
LEFT JOIN EMP
ON EMP2.Transaktionscode =  EMP.Bestellnummer);
SQL:
UPDATE Emperior AS E2T
SET
E2T.Name=(SELECT COALESCE(MeineView.Beschreibung, 'ffff') FROM MeineView WHERE
          Referenznummer LIKE '%FEE' AND Beschreibung LIKE '%Anzeigengebühr%')
Als letztes: Dir ist auch klar, dass das knallt, wenn das SELECT mehr als ein Ergebnis liefert?
 
Zuletzt bearbeitet:
Zurück