Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]usuwanie z kilku tabel, w relacji jeden do wielu
pablo_83
post
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


witam,
mam pytanie odnośnie usuwania danych z kilku tabel powiązanych między sobą na raz.

mam taką strukturę:

tabela Strony
id_strona <- klucz główny

tabela Aktualności
id_aktualnosci <-klucz główny
id_strony <-klucz obcy

tabela Aktualności_pliki
id_plik <- klucz główny
id_aktualności <- klucz obcy

teraz chcę usunąć stronę o danym id_strony muszę sprawdzić jakie aktualności są na tej stronie i czy do danej aktualności są dodane jakieś pliki.
Czy mogę w jakiś sposób jednym zapytaniem czy strona ma jakieś aktualności a one jakieś pliki jeśli tak to wykorzystać je do usuwania rekordu?

Czy jednak muszę zdobyć id_aktualności potem usunąć wszystkie pliki o tym id i dopiero potem usuwać wszystkie aktualności o danym id_strony.

Czy da się w tym przypadku przy usuwaniu użyć join'a w którejkolwiek postaci?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Przy relacjach, oczywiście silnik InnoDB (chyba nie muszę wspominać) i kaskadowe usuwanie danych.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
pablo_83
post
Post #3





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


tak silnik oczywiście mam InnoDb
rozumiem że to w ustawieniach tabeli przy kluczach w opcji delete mam mieć ustawione cascade?

czy w zapytaniu potem też dodtkowo coś muszę zawierać oprócz oczywiście id_strony ?
jak miałoby wyglądać samo zapytanie?
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(pablo_83 @ 15.06.2011, 21:33:32 ) *
rozumiem że to w ustawieniach tabeli przy kluczach w opcji delete mam mieć ustawione cascade?

Dobrze rozumiesz.
Cytat(pablo_83 @ 15.06.2011, 21:33:32 ) *
czy w zapytaniu potem też dodtkowo coś muszę zawierać oprócz oczywiście id_strony ?
jak miałoby wyglądać samo zapytanie?

Wtedy, jeżeli usuniesz z tabeli strony, to wszystko co było powiązane zniknie automatycznie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 Aktualny czas: 20.08.2025 - 16:47