Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Usuwanie nie pokrywających się danych
stmaciek
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 14.07.2010

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


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ź (IMG:style_emoticons/default/smile.gif)

Ten post edytował stmaciek 2.01.2011, 19:45:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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)

Ten post edytował tehaha 2.01.2011, 20:07:43
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 - 07:48