Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit DELETE

Einklappen

Neue Werbung 2019

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

  • Problem mit DELETE

    Hallo,

    ich hab da mal ein kleines Problem.
    Es geht um folgendes. Ich möchte Datensätze aus 3 Tabellen löschen.
    Das mache ich mit diesem Syntax:

    PHP-Code:
    $sql="DELETE FROM autos, daten, bilder USING autos, daten, bilder WHERE autos.auto_id = '".$id."' AND daten.auto_id = '".$id."' AND bilder.auto_id = '".$id."'"
    Das funktioniert auch gut.
    Aber leider nur wenn in allen 3 Tabellen was drin steht.
    Ist z.B. die ID in Bilder nicht vorhanden, wird die Abfrage zwar ausgeführt,
    aber der Datensatz wird nicht gelöscht.

  • #2
    Code:
    AND daten.auto_id = '".$id."' AND bilder.auto_id = '".$id."'";
    Na wie verwunderlich. Ehrlich solche Frage kannst Du Dir hier schenken.

    Kommentar


    • #3
      Dacht mir schon das das am AND liegt.

      Aber wie muß ich den Syntax ändern damit die Datensätze aus den
      Tabellen gelöscht werden wo was drin steht?

      Kommentar


      • #4
        Beschreib doch bitte nochmal ausführlich Dein Vorhaben und welchen Bedingungen was und wo gelöscht werden soll.

        Kommentar


        • #5
          Also ich habe einen Admin-Bereich erstellt. Dort kann man die Datensätze
          einer Datenbank mit 3 Tabellen verwalten.
          Diese sind über das Feld auto_id verknüpft.
          Es wird also eine Übersicht geladen, in der alle Datensätze angezeigt
          werden. Dort hat man dann die Möglichkeit die Datensätze zu editieren oder
          zu löschen.

          Wenn ich jetzt einen Datensatz - sagen wir mit der auto_id 10 - löschen
          will und die auto_id 10 ist in der Tabelle bilder nicht vorhanden,
          wird die Abfrage ja nicht ausgeführt (wegen den AND's).

          Ich wollte jetzt wissen, wie ich die Abfrage ändern muß, damit
          der Datensatz gelöscht wird. Auch wenn in der Tabelle bilder diese auto_id
          nicht vorhanden ist.

          Kommentar


          • #6
            Na und wie heisst denn das Verbindungswort wenn nur das eine oder das andere oder auch beides vorhanden sein soll?

            Kommentar


            • #7
              Ich verstehe immer noch nicht was "der Datensatz" in
              Ich wollte jetzt wissen, wie ich die Abfrage ändern muß, damit
              der Datensatz gelöscht wird. Auch wenn in der Tabelle bilder diese auto_id
              nicht vorhanden ist.
              sein soll. "Der unbekannte Datenatz"? "Der zufällige Datensatz"? "Der beliebige Datensatz"?
              Wenn Du alle Datensätze löschen willst, lass einfach die WHERE-Bedingung weg.

              Kommentar


              • #8
                Du kannst es evt. über einen constraint abbilden, heisst wenn aus der Tabelle autos ein auto gelöscht wird automatisch die kinder löschen lassen, fertig...

                Kommentar


                • #9
                  Ich meine den Datensatz der zum löschen ausgewählt wurde.
                  Also in meinem Beispiel mit der auto_id 10.

                  In der Tabelle autos und daten gibt es einen Datensatz mit der auto_id 10.
                  In der Tabelle bilder jedoch nicht.

                  So wie meine Abfrage jetzt ist, wird der datesatz in der Tabelle autos bzw.
                  daten nicht gelöscht, weil in der Tabelle bilder kein Datensatz mit der auto_id 10 existiert.

                  Ich hab auch schon mal aus den AND's ein OR gemacht. Da wurden aber gleich alle Tabellen geleert.

                  Kommentar


                  • #10
                    Man kann die Kirche auch im Dorf lassen und drei Querys absetzen

                    Kommentar


                    • #11
                      ja das kann man natürlich machen.
                      Aber es muß doch auch ne Möglichkeit geben das so zu machen.

                      Schon alleine wegen der Übersichtlichkeit und so.

                      Kommentar


                      • #12
                        Ach komm! Als ob Deine Query da oben übersichtlich wäre!

                        Kommentar


                        • #13
                          @see #8

                          Kommentar


                          • #14
                            Zitat von nikosch Beitrag anzeigen
                            Ach komm! Als ob Deine Query da oben übersichtlich wäre!
                            Also ich find die schon übersichtlich.
                            Was soll denn daran unübersichtlich sein?

                            Kommentar


                            • #15
                              Zitat von pfump Beitrag anzeigen
                              Also ich find die schon übersichtlich.
                              Eine auf eine Zeile gezwängte Abfrage über drei Tabellen soll übersichtlich sein

                              Kommentar

                              Lädt...
                              X