Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] usuwanie rekordów, jeśli w drugiej tabeli nie ma rekordu o odpowiednim id, a dokladniej komentarzy pozostających po skaskowanych artykułach
ficiek
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 9.09.2011
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam mam dwie tabele: comments i articles.
Rekordy w articles mają oczywiście id, natomiast komentarze about_id, które odpowiada odpowiednim id artykułów do których są przypisane.
Chcę w jednym zapytaniu mieć możliwość usunięcia wszystkich przestarzałych komentarzy, czyli takich których odpowiadające artykuły usunięto.

Chodzi mi o coś w stylu:
  1. DELETE FROM comments WHERE about_id NOT IN (SELECT id FROM articles)

Niestety nie wiem jak dokładnie to zapisać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AlexDeLarge
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

Ostrzeżenie: (0%)
-----


  1. DELETE FROM comments RIGHT JOIN articles ON comments.about_id=articles.id WHERE articles.id IS NULL


LUB

  1. ALTER TABLE comments ENGINE=InnoDB;
  2. ALTER TABLE articles ENGINE=InnoDB;
  3. ALTER TABLE comments ADD FOREIGN KEY 'fk_articles' REFERENCES articles(id) ON DELETE CASCADE;


i...magia, działa samo bez dodatkowych zapytań. Ale uwaga, jeśli korzystasz z wyszukiwania FULLTEXT w jednej z tabel, nie możesz tego zrobić.

//RIGHT JOIN, albo LEFT, zawsze mi się pier...

Ten post edytował AlexDeLarge 22.11.2011, 23:25:06
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:55