Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Kasowanie rekordów z tabeli pseudo-relacyjnej
Forum PHP.pl > Forum > Przedszkole
Adi32
Muszę przerobić bazę danych z tabelami pseudo-relacyjnymi na normalne.
Niestety nie da się tego zrobić puki nie skasuje błędnych wpisów które odnoszą się do nieistniejących kluczy.

Wiem, że jest wiele sposobów na szybkie zrobienie tego, ale zastanawiam się, czy jest jakiś "sprawdzony" ogólny sposób.

Tu przykład kodu który kasuje zerową ilość rekordów:

  1. DELETE FROM zamowienie_produkt WHERE (SELECT id FROM zamowienie z WHERE zamowienie_produkt.id_zamowienie = z.id ) IS NULL


edit:
Czytam temat i nie wiem czy jest w pełni zrozumiały...

Chodzi o skasowanie wszystkich rekordów z tabeli zamowienie_produkt w których kolumna id_zamowienie odnosi się do nieistniejącego rekordu, innymi słowy nie istnieje zamówienie o takim id bo ktoś skasował a nie wziął pod uwagę że zostaną błędne wpisy w tabeli zamowienie_produkt.
mmmmmmm
  1. DELETE FROM zamowienie_produkt WHERE id IN (SELECT zp.id FROM zamowienie_produkt zp LEFT JOIN zamowienie z ON z.id=zp.id_zamowienie WHERE z.id IS NULL)
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.