2016-04-22 7 views
0

Kommentar Tabellemysql mit links löschen verbinden mit einem anderen Tisch

+------+----------+ 
| id | comment | 
+------+----------+ 
| 1 | foo  | 
| 2 | bar  | 
| 3 | foobar | 
+------+----------+ 

Antwort Tabelle

+------+----------+------------+ 
| id | reply |comment_id | 
+------+----------+------------+ 
| 1 | nice lol | 1   | 
| 2 | ok ok | 2   | 
| 3 | hello | 1   | 
| 4 | hello2 | 1   | 
| 5 | hello1 | 1   | 
+------+----------+------------+ 

like_reply Tisch

+------+----------+ 
| id | reply_id | 
+------+----------+ 
| 1 | 1  | 
| 2 | 2  | 
| 3 | 3  | 
| 4 | 4  | 
| 5 | 5  | 
+------+----------+ 


DELETE `comment`,`reply` FROM `comment` LEFT JOIN `reply` 
ON `comment`.`id` = `reply`.`comment_id` WHERE `comment`.`id` = '1' 

diese Abfrage muss Kommentar löschen mit der ID ein und alle Antwort mit kommentar_id eins

, aber wie kann ich die like_reply Tisch sitzen und löschen Sie alle gemocht Antwort

die like_replay mit Beziehung mit Antwort Tabelle von Antwort-ID und der Antwort-Tabelle mit Beziehung mit commnet Tabelle von Kommentar-ID

+0

warum Sie ablehnen? –

Antwort

1

Try this:

DELETE c, r, lr 
FROM `comment` AS c 
LEFT JOIN `reply` AS r ON c.id = r.comment_id 
LEFT JOIN like_reply AS lr ON r.id = lr.reply_id 
WHERE c.id = 1; 

Demo here

Die obige Abfrage löscht Kommentar mit id=1 Datensätze aus comment Tabelle zusammen mit entsprechenden Datensatz in reply und like_reply Tabellen.

Wenn Sie jedoch immer die comment Rekord Löschen Kaskade zu den anderen Tabellen möchten, dann sollten Sie foreign key constraints in reply und like_reply Tabellen mit ON DELETE CASCADE Subklausel betrachten platzieren ..

0

Sie können nicht spezifisch Spalte in löschen ..

DELETE FROM `comment` LEFT JOIN `reply` 
ON `comment`.`id` = `reply`.`comment_id` WHERE `comment`.`id` = '1' 

, wenn Sie „löschen“ wollen nur einige fiedl in Reihen sollten Sie Update verwenden