Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Usuwanie nie pokrywających się danych
Forum PHP.pl > Forum > Przedszkole
stmaciek
Witam.
Staram się wyłuskać zapytanie do bazy danych MySQL, które usunie z bazy dane. Schemat:
-tabela1, a w niej klucz podstawowy id (int)
-tabela2,a w niej klucz obcy fk_id
Chcę usunąć dane z tabeli tabela1, z których klucza nie ma w tabeli2 jednym zapytaniem. Oto niektóre moje nieudane próby:
  1. DELETE FROM `tabela1` WHERE id NOT LIKE tabela2.fk_id;

  1. DELETE FROM `tabela1` WHERE id!=tabela2.fk_id;

Proszę o podpowiedź smile.gif
tehaha
z tego co zrozumiałem to tabela1 i tabela2 zawierają powiązane dane łączone na kolumnach tabela1.id = tabela2.fk_id

możesz zrobić to 2 zapytaniami, nie wiem czy da się to zrobić jednym zapytaniem:
1. pobierasz id rekordów z tabela1, które mają dane powiązane w tabela2
  1. SELECT a.id FROM tabela1 a JOIN tabela2 b ON a.id = b.fk_id

zbierasz je do tablicy i funkcją implode przerabiasz na 1,2,3,4,5,6
2. używając NOT IN usuwasz wszystkie inne
  1. DELETE FROM tabela1 WHERE id NOT IN(1,2,3,4,5)


edit: możesz też spróbować z podzapytaniem (subquery)
stmaciek
Już działa smile.gif może bez implode'a, bo ja nie wierzę w takie funkcje i robię to w pętli, pisząc własne smile.gif dzięki!
and1
Napisz jak to zrobiłeś a nie tylko napisałeś że działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.