Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie usuwajace dane
Forum PHP.pl > Forum > Bazy danych > MySQL
air_szyna
Witam

Mam Problem z napisaniem jednego zapytania.
Mam 2 tabele

W pierwszej są pola
| id_gracza | nick gracza |

W drugiej
| id_gracza | ilosc_pkt | data |

I teraz chodzi mi o zapytanie które z drugiej tabeli usunie wszystkie rekordy które nie pasują do żadnego gracza.
Jeśli np z tabeli pierwszej usunę gracza o identyfikatorze 5,6,9 i 15 to chciałbym żeby zapytanie usuwało z drugiej tabeli wszystkie dane do tych graczy.
batman
  1. DELETE FROM tabela2 WHERE id_gracza NOT IN (SELECT id_gracza FROM tabela1)


Lepiej jednak zrobisz, jeśli podczas usuwania danych z tabeli1, usuniesz dane z tabeli2

  1. DELETE FROM tabela1 WHERE id_gracza = 1;
  2. DELETE FROM tabela2 WHERE id_gracza = 1;


Wartość 1 jest tu tylko przykładem winksmiley.jpg
air_szyna
Dzięki ... właśnie o to mi chodziło :-)

A dlaczego drugie rozwiązanie jest lepsze questionmark.gif
batman
Usuwając dane w tym samym mniej więcej momencie, będziesz miał pewność, iż nie będą wisiały "puste" wpisy. W ten sposób będziesz miał większy porządek w bazie. Poza tym jeśli chcesz używać pierwszego rozwiązania, musisz wykonywać zapytanie cyklicznie, a to oznacza jakiś skrypcik działający w cronie. Najlepszym rozwiązaniem byłoby napisanie trigerra, ktróry usuwałby dane z drugiej tabeli w momencie usunięcia ich z tabeli pierwszej.

edit
Zapomniałem dodać, by uważań na klucze obce i kolejności usuwania danych.
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.