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 (1 - 3)
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
stmaciek
post
Post #3





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

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


Już działa (IMG:style_emoticons/default/smile.gif) może bez implode'a, bo ja nie wierzę w takie funkcje i robię to w pętli, pisząc własne (IMG:style_emoticons/default/smile.gif) dzięki!
Go to the top of the page
+Quote Post
and1
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 26.02.2010

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


Napisz jak to zrobiłeś a nie tylko napisałeś że działa.
Go to the top of the page
+Quote Post

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: 25.08.2025 - 16:26