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.