Strona 1 z 1

Zapytanie SQL

Napisane: wtorek, 12 sierpnia 2008, 11:44
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.

Re: Zapytanie SQL

Napisane: wtorek, 12 sierpnia 2008, 13:08
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

Re: Zapytanie SQL

Napisane: wtorek, 12 sierpnia 2008, 15:47
przez Malutki
Wielkie dzieki nie dodalem ze potrzebuje to zrobic w bazie firebird ale i tak wielkie dzieki poszukam jeszcze na necie :)

Re: Zapytanie SQL

Napisane: poniedziałek, 4 sierpnia 2014, 20:40
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.