Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako da napisem ovaj upit za brisanje?

[es] :: MySQL :: kako da napisem ovaj upit za brisanje?

[ Pregleda: 610 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

antix

Član broj: 8388
Poruke: 246
*.mobtel.co.yu

Jabber: antix@elitesecurity.org


Profil

icon kako da napisem ovaj upit za brisanje?15.03.2004. u 12:19

Kako da najbrze uradim sledece. Tabele su sledece:

-----------------------
tabela1

nekipodaci1
sifra1
----------------------

---------------------
tabela2
sifra1
sifra2
---------------------

---------------------
tabela3
sifra2
nekipodaci3
---------------------

Znaci tabela2 povezuje tabelu1 i tabelu3. Sada ako mi je data sifra1 treba iz svih tabela da
obrisem sve povezane zapise. Znaci u tabeli2 nadjem sve vrijednosti sifra2 koje odgovaraju
vrijednosti koja je zadata za sifru1 i onda iz tabele3 brisem one zapise koji odgovaraju sifri2 a
zatim se vratim i brisem iz tabele2 i tabele1. Zanima me rjesenje (ako postoji) pomocu samo jednog upita (MySQL 3.23).
15.03.2004. u 12:19 

noviKorisnik

Član broj: 13216
Poruke: 4516
194.247.222.*



Profil

icon Re: kako da napisem ovaj upit za brisanje?15.03.2004. u 12:41
Nije mi jasno zbog čega se ovde koriste 3 tabele. Predstavljena relacije opisuje odnos "više prema više" - slog iz tabele 1 se preko tabele 2 može povezati s više slogova tabele 3 a i obratno.

Ovakav zahtev za brisanje je u suprotnosti sa takvom relacijom. Evo skoro najkraćeg primera:
Tabela 1: ključevi 1 i 2
Tabela 3: ključevi a i b
Tabela 2: parovi (1, a), (1, b) i (2, a)
- Brisanje za ključ 2 tabele 1? U tabeli 2 pronađe se (2, a) odakle se nalazi u tabeli 3 ključ a i briše zapis, pa se iz tabele 2 briše (2, a) i na kraju iz tabele 1 briše zapis s ključem 2.
- U čemu je sad problem? U tabeli 2 je ostao slog (1, a) koji pokazuje na nepostojeći zapis tabele 3!

Može li se pojasniti zašto postoje 3 tabele?
15.03.2004. u 12:41 

antix

Član broj: 8388
Poruke: 246
*.panline.net

Jabber: antix@elitesecurity.org


Profil

icon Re: kako da napisem ovaj upit za brisanje?15.03.2004. u 14:17
da, znam da bi bilo lakse da se prestruktuiraju tabele ali me konkretno zanima
kako biste vi uradili ovo bas za ovaj slucaj. Cisto iz radoznalosti!!!

poz
15.03.2004. u 14:17 

noviKorisnik

Član broj: 13216
Poruke: 4516
194.247.222.*



Profil

icon Re: kako da napisem ovaj upit za brisanje?15.03.2004. u 15:02
Iz MySQL Manuala:
Code:
DELETE [LOW_PRIORITY | QUICK] table_name[.*] [table_name[.*] ...]
FROM table-references
[WHERE where_definition]

... što bi u ovom slučaju bilo (ako je sifra1 za brisanje 2):
Code:
DELETE tabela1, tabela2, tabela3
FROM tabela1, tabela2, tabela3
WHERE tabela1.sifra1 = '2'
  AND tabela1.sifra1 = tabela2.sifra1
  AND tabela2.sifra2 = tabela3.sifra2

Čisto iz radoznalosti - i mene interesuje da li radi - testiraj pa javi ;)
15.03.2004. u 15:02 

antix

Član broj: 8388
Poruke: 246
*.mobtel.com

Jabber: antix@elitesecurity.org


Profil

icon Re: kako da napisem ovaj upit za brisanje?15.03.2004. u 23:02
Ovaj upit je korektan. Isproban i radi!!! Hvala ti, to mi je trebalo....
15.03.2004. u 23:02 

[es] :: MySQL :: kako da napisem ovaj upit za brisanje?

[ Pregleda: 610 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.