Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] usuwanie z tabeli
DeyV
post
Post #1





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




To chyba prosty problem, ale coś nie wiem, jak to zrobić...
Jak stworzyć zapytanie, umożliwiajace usunięcie wszyskich wpisów z tabeli, dla których nie istnieje rodzic, tj. został usuniety?
Na zasadzie zwiazku:
tabela potomków: id, id_rodzica, dane...
tabela rodziców: id, dane...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
uboottd
post
Post #2





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Cytat
Zapytanie:
Cytat
DELETE FROM produkty
USING produkty, kategorie
WHERE kategorie.id = produkty.kat
and kategorie.id IS NULL
jest co prawda poprawne, ale usuwa 0 rekordów, choć zapytanie typu:
Cytat
SELECT produkty. * , kategorie. *
FROM produkty
LEFT JOIN kategorie
ON kategorie.id = produkty.kat
WHERE kategorie.id IS NULL

wyświetla wszystkie potrzebne rekordy.



Odpowiedz jest prosta - to NIE SA takie same zapytania. W pierwszym przypadku wybierasz te wiersze ktore MAJA swoje odpowiedniki w drugiej tabeli, po czym usilujesz skasowac te ktore nie maja idkow, a przy takim warunku one oczywiscie odpadna w przedbiegach (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Natomiast w drugim wybierasz WSZYSTKIE wiersze z pierwszej tabeli, po czym doklejasz ewentualne wiersze z drugiej - i tu moga sie pojawic juz nule w drugiej tabeli.

A rozwiazanie zadania jest takie:

Cytat
DELETE FROM produkty
USING produkty LEFT JOIN kategorie ON produkty.kat = kategorie.id
WHERE kategorie.id IS NULL
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 03:16