Zapytanie SQL

Tu dyskutujemy i rozwiązujemy problemy związane z innymi językami programowania.
Malutki
Bywalec
Bywalec
Posty: 46
Dołączył(a): czwartek, 7 sierpnia 2008, 10:46

Zapytanie SQL

Post przez Malutki »

Czesc wszystkim chcialbym zapytac o taki watek:

Potrzebuje usunac z tabel ze soba powiazanych wszystkie rekordy powiazane z glowna tabla tzn.

Przyklad mam tabele dziecko (imie nazwisko wiek )z ktora powiazana jest tabela rodzic w ktorej jest przypozadkowane dziecko ,moje pytanie czy istnieje jakis sposob zeby automatem usunac np: dzieci ktore maja powyzej 18 lat .Mam nadzieje ze nie namieszalem i uda sie zrozumiec sens mojego pytania.

Pozdrawiam Piotr.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Zapytanie SQL

Post przez Morfidon »

Kiedy coś jest powiązane to podczas usuwania z jakiegoś panelu raczej powinno się pytać, czy usunąć w ogóle rekord oraz powiązania. Takie coś może być czasem niebezpieczne (utrata danych). No bo algorytm nie wie jak my stworzyliśmy te dane. ;).

W każdej tabeli powinien znajdować się unikalny identyfikator ID.

Teraz np. w tabeli rodzic masz troje rodziców.

Code: Zaznacz cały

ID      imie       nazwisko       id_dziecka
1       test1      testt1            2
2       test2      testt2            52
3       test3      testt3            41
W tabeli dziecko masz dzieci

Code: Zaznacz cały

ID       imie         nazwisko   wiek   
1        dzidzi1       testtt      10 
2        dzidzi2       testt1      19   
.......................................
41       dzidzi3       testt3      15
.......................................
52       dzidzi4       testt2      26

Teraz usuwanie rekordów spokrewnionych dzieci mających powyżej 18 roku życia.

Code: Zaznacz cały

$dzieci = mysql_query("SELECT * FROM dziecko WHERE wiek > 18");

for ($i = 0; $i < mysql_num_rows($dzieci); $i++)
{
     $wiersz = mysql_fetch_array($dzieci);
     
     //mysql_query("DELETE FROM rodzic WHERE id_dziecka = ".$wiersz['ID']." "); - możemy usunąć rodziców co zrobiłby automat ;) możemy też zmienić wartość wskazywanego ID na 0 co możemy oznaczyć brakiem dzieci przy użyciu instrukcji warunkowej
     mysql_query("DELETE FROM dziecko WHERE ID = ".$wiersz['ID']." ");
     // usuwamy z kazdej tabeli powiazanych z ID
}
Wole takie coś napisać i być pewnym, że mi czegoś nie usunie. Gotowego zapytania na SQL (jeżeli istnieje) do usunięcia powiązanych danych nie znam.

http://office.microsoft.com/pl-pl/acces ... 11045.aspx - artykuł o tym w MySql Jet (podobne, tylko w Accessie)

Mam nadzieję, że zrozumiałem Twoje pytanie ;)

Pozdrawiam
Malutki
Bywalec
Bywalec
Posty: 46
Dołączył(a): czwartek, 7 sierpnia 2008, 10:46

Re: Zapytanie SQL

Post przez Malutki »

Wielkie dzieki nie dodalem ze potrzebuje to zrobic w bazie firebird ale i tak wielkie dzieki poszukam jeszcze na necie :)
asokalski
Początkujący
Początkujący
Posty: 5
Dołączył(a): środa, 30 lipca 2014, 15:11
Lokalizacja: Katowice
Contact:

Re: Zapytanie SQL

Post przez asokalski »

Poszukaj na Yotubie. Kiedyś natrafiłem na gościa, który dawał zrzuty z ekranu jak robił podobne rzeczy. A w opisie dawał komendy.
Post Reply