Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

DELETE mit Select funktioniert nicht

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Kalicronic, 3 Juni 2017.

  1. Kalicronic

    Kalicronic Benutzer

    Hallo Leutz,

    ich hab eine Select abfrage die funktioniert (ausprobiert!), aber in Verbindung mit der folgend gezeigten Delete Anweisung sagt er mir:
    #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '(
    SELECT * FROM employees t1
    JOIN dept_emp t2 ON t1.emp_no = t2.emp_no
    LEFT J' in Zeile 1

    Code:
    DELETE FROM employees(
    SELECT * FROM employees t1
    JOIN dept_emp t2 ON t1.emp_no = t2.emp_no
    LEFT JOIN dept_manager t3 ON t3.dept_no = t1.emp_no
    WHERE DATEDIFF(SYSDATE(), t1.birth_date)/365 > 59
    AND t2.dept_no = 'd004'
    AND NOT t1.emp_no = (
        SELECT emp_no FROM dept_manager
            WHERE dept_no = 'd004'
            and to_date > sysdate())
    );
    
    Muss ich die komplette Anweisung umschreiben??? -.-'
     
  2. akretschmer

    akretschmer Datenbank-Guru

  3. Kalicronic

    Kalicronic Benutzer

    Bissl mehr Erklärung wäre ja schon schön, auch wenn ich nicht konkret danach gefragt habe. :D
    Trotzdem danke :p

    Warum funktioniert es so nicht, wie könnte ich das schnellst möglich umformulieren oder hätte da jemand vielleicht eine schnelle Lösung parat.!?
    Ich tue mich da etwas schwer mit und muss das heute noch fertig bekommen und damit etwas rum testen in einer DB.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Jeder Befehl hat seine eigene Syntax, DELETE z.B. (in PostgreSQL):

    Code:
    Anweisung:  DELETE
    Beschreibung: löscht Zeilen einer Tabelle
    Syntax:
    [ WITH [ RECURSIVE ] With-Anfrage [, ...] ]
    DELETE FROM [ ONLY ] Tabellenname [ * ] [ [ AS ] Alias ]
      [ USING Using-Liste ]
      [ WHERE Bedingung | WHERE CURRENT OF Cursor-Name ]
      [ RETURNING * | Ausgabeausdruck [ [ AS ] Ausgabename ] [, ...] ]
    
    
    Deine Verwunderung, das eine andere Syntax nicht geht, sollte also begrenzt sein.
     
  5. Kalicronic

    Kalicronic Benutzer

    Also wie eine simple DELETE Anweisung funktioniert ist mir schon klar.
    Ich hab nur gehofft das ich das irgendwie auch mit der schon formulierten Selekt-Anweisung Kombinieren kann.
    Nun bin ich leider immer noch nicht "viel" schlauer und weis nicht wie genau ich das ganze anders aufbauen soll...
     
  6. akretschmer

    akretschmer Datenbank-Guru

    schau mal, wenn Du ein select * from t1 join t2 machst, dann hat Deine Ergebnismenge schon mal die Spalten von t1 UND t2. Zum Löschen aber muß Du angeben, welche Zeilen gelöscht werden sollen. Idealerweise ermittelt man dazu die Primary keys der zu löschenden Zeilen.
     
    Kalicronic gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden