2016-10-21 19 views
0

lässt sagt, ich habe diese Variable:Löschen von zwei oder mehr Tabellen

post_id $ = 222;

$ IsLoggIn = 2;

Ich habe die gleiche Spalte "post_id" Name in fünf verschiedenen Tabellen. Ich möchte eine SQL-Anweisung schreiben, um zu überprüfen und zu sehen, ob es eine Zeile mit Spaltennamen „post_id“ ist, deren Wert gleich der Variablen „$ post_id“ und löschen Sie diese Zeile

Hinweis: Apart von der "public_feed_table", ist es möglich, es könnte keine Zeile mit post_id gleich Variable "$ post_id" so die SQL-Anweisung sollte überprüfen, ob es eine Zeile vor dem Löschen ist.

Ich möchte eine einzelne SQL-Anweisung, die diese Aufgabe erledigen kann.

Was ich versuchte, ist unten. Bitte helfen:

global  $dbc_conn, 
      $public_feed_table, 
      $images_table, 
      $comments_table, 
      $rating_table, 
      $notification_table,  
      $IsLoggIn; 

$sql = "DELETE 
         p,i,c,r,n 
          FROM 
           $public_feed_table p 
            LEFT JOIN 
            $images_table i, 
            $comments_table c, 
            $rating_table r, 
            $notification_table n 
             ON 
             i.post_id, 
             c.post_id, 
             r.post_id, 
             n.post_id=p.post_id 

             WHERE p.post_id='$post_id' 
             AND p.user_id='$IsLoggIn' 

             "; 
      //query database 
      $query = mysqli_query($dbc_conn,$sql); 
+1

Ihr Join-Syntax falsch ist. Es muss sein 'verbinden auf beitreten auf ' – Jens

+0

Sie schrieb, was Sie versucht haben und was Sie wollen. Aber Sie haben nicht geschrieben, was das Problem ist – Jens

+0

ist sagt: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das zu Ihrer MariaDB-Server-Version für die richtige Syntax in der Nähe von "Kommentare c, Bewertungen r, Benachrichtigung n" in Zeile 6 –

Antwort

1

Sie beitreten Syntax is worng. Es muss sein:

 $sql = "DELETE p,i,c,r,n 
         FROM 
         $public_feed_table p 
          LEFT JOIN 
          $images_table i ON 
          p.post_id = i.post_id 

          LEFT JOIN 
          $comments_table c ON 
          p.post_id = c.post_id 

          LEFT JOIN 
          $rating_table r ON 
          p.post_id = r.post_id 

          LEFT JOIN 
          $notification_table n ON 
          p.post_id=n.post_id 

           WHERE p.post_id='$post_id' 
           AND p.user_id='$IsLoggIn' 

           "; 

Weitere Informationen finden Sie unter: http://www.w3schools.com/sql/sql_join_left.asp

+0

danke..Ihre Idee half –

0

Ihre JOIN Syntax total seltsam. Es sollte vielmehr seine

     FROM 
          $public_feed_table p 
           LEFT JOIN 
           $images_table i ON i.col = p.col, 
           LEFT JOIN $comments_table c ON p.col = c.col, 

** col zum Beispiel ist, ersetzen Sie es mit dem tatsächlichen Spaltennamen pro Ihrem Tabellenschema

Verwandte Themen