![]() |
![]() |
![]()
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... |
|
|
![]() |
![]()
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
jest co prawda poprawne, ale usuwa 0 rekordów, choć zapytanie typu: USING produkty, kategorie WHERE kategorie.id = produkty.kat and kategorie.id IS NULL 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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 03:16 |