Ankündigung

Einklappen
Keine Ankündigung bisher.

delete befehl aus mehreren Tabellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • delete befehl aus mehreren Tabellen

    Servus Leute...Ich muss die Werte aus mehreren Tabellen löschen.

    Mein Beispiel dazu:
    Code:
    delete from Hw left join Calibration, 
                Hw left join HwIsConnectedWith, 
                Hw left join Log, 
                Hw left join RepairHistory
        where Hw.HwID = Calibration.CalibrationFrom, 
        and Hw join HwIsConnectedWith on Hw.HwID = HwIsConnectedWith.HwID, 
        and Hw join Log on Hw.HwID = Log.LogFrom, 
        and Hw join RepairHistory on Hw.HwID = RepairHistory.RepairHistoryFrom
        and Hw.HwID = 2717;
    Bekomme aber einen Fehler:
    Code:
     FehlerSQL-Befehl:
    
    
     delete from Hw left join Calibration,  			Hw left join HwIsConnectedWith,              Hw left join Log,              Hw left join RepairHistory     where Hw.HwID = Calibration.CalibrationFrom,      and Hw join HwIsConnectedWith on Hw.HwID = HwIsConnectedWith.HwID,      and Hw join Log on Hw.HwID = Log.LogFrom,      and Hw join RepairHistory on Hw.HwID = RepairHistory.RepairHistoryFrom     and Hw.HwID = 2717  
    
    
    MySQL meldet: Dokumentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left join Calibration,
                Hw left join HwIsConnectedWith,
                Hw lef' at line 1

  • #2
    Warum stehn da überall willkürlich "Hw" verstreut?

    Kommentar


    • #3
      Zitat von hellbringer Beitrag anzeigen
      Warum stehn da überall willkürlich "Hw" verstreut?
      Hw Calibration, HwIsConnectedWith, Log und RepairHistory sind die Namen der Tabellen. ich finde kein Beispiel, wie ich join von hw zu den anderen Tabellen machen kann.

      Könnte ich es denn auch so hier machen?
      Code:
      delete from Hw where Hw.HwID = ; 
      delete from Calibration where Calibration.CalibrationFrom = ;
      delete from HwIsConnectedWith where HwIsConnectedWith.HwID = ; 
      delete from Log where Log.LogFrom = ;
      delete from RepairHistory where RepairHistory.RepairHistoryFrom = ;
      Also mehrere Befehle hintereinander oder geht es auch einfacher?

      Kommentar


      • #4
        Zitat von Amaninho Beitrag anzeigen
        Hw Calibration, HwIsConnectedWith, Log und RepairHistory sind die Namen der Tabellen.
        Aber warum scheibst du "Hw" vor jeden LEFT JOIN?

        Zitat von Amaninho Beitrag anzeigen
        ich finde kein Beispiel, wie ich join von hw zu den anderen Tabellen machen kann.
        Ach komm, das sind absolute Grundlagen die zigtausendfach überall erklärt werden.

        Kommentar


        • #5
          Und selbst das multi-table DELETE steht in der Doku: https://dev.mysql.com/doc/refman/8.0/en/delete.html

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen
            Ach komm, das sind absolute Grundlagen die zigtausendfach überall erklärt werden.
            Dieses "Ach komm" bringt mich jetzt auch nicht weiter....wie man Join macht weiß ich...aber im Beispiel zu Delete klappt es leider nicht. Sonst würde ich kaum hier was fragen.

            Habe es jetzt umgeändert in :
            Code:
            delete Hw, Calibration, HwIsConnectedWith, Log, RepairHistory
                from Hw, Calibration, HwIsConnectedWith, Log, RepairHistory 
                    where Hw.HwID = Calibration.CalibrationFrom 
                    and Hw.HwID = HwIsConnectedWith.HwID
                    and Hw.HwID = Log.LogFrom 
                    and Hw.HwID = RepairHistory.RepairHistoryFrom
                and Hw.HwID = 2271;
            Allerdings sind damit 0 Datensätze betroffen, obwohl es eine HwID 2271 exitiert.

            Kommentar


            • #7
              Erstell doch erst mal ein SELECT und bring den zum Laufen. Vom SELECT zum DELETE ist es dann recht einfach.

              Kommentar


              • #8
                Warum informierst du dich nicht erst mal, wie eine Left Join überhaupt funktioniert? Du schusterst da irgendeinen Code nach dem Zufallsprinzip zusammen, und hoffst, dass er schon irgendwie gehen wird. Aber so funktioniert das in der realen Welt nicht. Es hat alles eine klar beschriebene Syntax mit klaren Regeln, die auch einzuhalten sind.

                Kommentar


                • #9
                  Zitat von Dormilich Beitrag anzeigen
                  Erstell doch erst mal ein SELECT und bring den zum Laufen. Vom SELECT zum DELETE ist es dann recht einfach.
                  Danke dir! Hat funktioniert.

                  Code:
                  delete h.*, c.*, hwIs.*, l.*, r.*
                  from Hw h
                  left join Calibration c on c.CalibrationFrom = h.HwID
                  left join HwIsConnectedWith hwIs on hwIs.HwID=h.HwID 
                  left join Log l on l.LogFrom = h.HwID 
                  left join RepairHistory r on r.RepairHistoryFrom = h.HwID
                  where h.HwID=2271

                  Kommentar

                  Lädt...
                  X