Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Usuwanie danych
Forum PHP.pl > Forum > Przedszkole
The Night Shadow
W jaki sposób usunąć z jakiejś tabeli tylko te dane dla, których id_uzytkownika nie zostało odnalezione w tabeli uzytkownicy?
suchy1
Dziwne pytanie, jezeli usuneles juz id_usera z tabeli np: users to powinno sie samo usunac. Chyba ze nie zrobiles powiazan miedzy tabelami. A na logike, jak chcesz cos usunac z tabel jezeli nie masz juz odwolania ktore mowie wedlug czego ma usuwac tiredsmiley.gif

np:
  1. DELETE FROM customers WHERE id_users=15;
The Night Shadow
Tabela:

Uzytkownicy:
id
login...

Posts
id
id_uzytkownika
tresc...

Nie da się z tabeli posts usunąć tych postów, z których wartość pola id_uzytkownika nie istnieje w tabeli uzytkownicy w polach id?
siemakuba
jeżeli twój MySQL poradzi sobie z podzapytaniami (chyba od wersji 4.1 - nie pamiętam dokładnie):
  1. DELETE FROM posts WHERE id_uzytkownika NOT IN (SELECT id FROM users);

być może nie jest to super-optymalne rozwiązanie, ale powinno działać.

pozdr.
suchy1
  1. DELETE FROM posts WHERE id_uzytkownika IS NULL


ale nie jestem pewny czy to zadziala, przeczytaj pierwszy lepsze FAQ do MySQL powinna byc skladnia.
siemakuba
Cytat
ale nie jestem pewny czy to zadziala, przeczytaj pierwszy lepsze FAQ do MySQL powinna byc skladnia.
zadziała, ale akurat nie zrobi tego co @The Night Shadow by chciał żeby zrobiło.
Aha, czytanie pierwszego lepszego FAQ zamieniłbym na czytanie Manuala. Tam faktycznie jest składnia.

pozdr.
The Night Shadow
  1. DELETE FROM posts WHERE id_uzytkownika NOT IN (SELECT id FROM users);


Jak to ubrać w php?

  1. <?php
  2. $zapytanie = mysql_query("DELETE FROM $tabela_datylogowan WHERE shoutbox_id_uzytkownika NOT IN (SELECT id FROM $tabela_logowanie)");
  3. ?>


Tak nie działa...
Gość
Cytat(The Night Shadow @ 10.06.2006, 19:49 ) *
  1. DELETE FROM posts WHERE id_uzytkownika NOT IN (SELECT id FROM users);


Jak to ubrać w php?

  1. <?php
  2. $zapytanie = mysql_query("DELETE FROM $tabela_datylogowan WHERE shoutbox_id_uzytkownika NOT IN (SELECT id FROM $tabela_logowanie)");
  3. ?>


Tak nie działa...


jasne ze nie bedzie dzialac bo za zmienne typu $ musisz cos podstawic snitch.gif
siemakuba
Cytat(Gość @ 10.06.2006, 21:15 ) *
jasne ze nie bedzie dzialac bo za zmienne typu $ musisz cos podstawic :>
ja bym zakładał, że te zmienne mają jednak odpowiednią wartośc, a @The Night Shadow poprostu nie pokazuje tego przypisania. Tak?

@The Night Shadow: mysql_error() coś pokazuje? czy wykonuje się bez błędu ale nie usuwa tego co powinno? Nazwy kolumn w bazie podałeś prawidłowo? MySQL masz w wersji co najmniej 4.1? (mysql_get_server_info" title="Zobacz w manualu php" target="_manual() np.)

pozdr.
The Night Shadow
Zmienne na pewno mają odpowiednie wartości. Mysql: 4.1.19-standard-log

Nie pokazuje się żaden błąd.

Co ciekawe.. teoretycznie, gdy za shoutbox_id_uzytkownika podstawię cokolwiek powinien wyskoczyć błąd. Nic takiego się nie dzieje,...
siemakuba
a może masz wyłaczone pokazywanie błędów? Dla pewności daj na początek
  1. <?php
  2. ini_set('display_errors', 1);
  3. ?>
Aha, sprawdź jeszcze co po wykonaniu tego DELETE pokaże funkcja mysql_affected_rows" title="Zobacz w manualu php" target="_manual. Może nie masz takich postów, które mają przypisane nieistniejące id użytkonika? Spróbuj dodać z palca do bazy post z jakimś nieistniejący id użytkownika i sprawdź czy zostanie usunięty.

pozdr.
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.