Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Usuwanie danych
The Night Shadow
post 10.06.2006, 14:19:15
Post #1





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


W jaki sposób usunąć z jakiejś tabeli tylko te dane dla, których id_uzytkownika nie zostało odnalezione w tabeli uzytkownicy?


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
suchy1
post 10.06.2006, 14:43:04
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

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


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;
Go to the top of the page
+Quote Post
The Night Shadow
post 10.06.2006, 14:50:16
Post #3





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


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?


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
siemakuba
post 10.06.2006, 15:03:51
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
suchy1
post 10.06.2006, 15:06:17
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

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


  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.
Go to the top of the page
+Quote Post
siemakuba
post 10.06.2006, 15:52:07
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
The Night Shadow
post 10.06.2006, 19:49:18
Post #7





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


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


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
-Gość-
post 10.06.2006, 20:15:07
Post #8





Goście







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
Go to the top of the page
+Quote Post
siemakuba
post 10.06.2006, 21:07:48
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
The Night Shadow
post 10.06.2006, 22:54:02
Post #10





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


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

Ten post edytował The Night Shadow 10.06.2006, 22:56:58


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
siemakuba
post 10.06.2006, 23:31:54
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 10:22