[ antix @ 15.03.2004. 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).
[ noviKorisnik @ 15.03.2004. 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?
[ antix @ 15.03.2004. 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
[ noviKorisnik @ 15.03.2004. 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 ;)
[ antix @ 15.03.2004. 23:02 ] @
Ovaj upit je korektan. Isproban i radi!!! Hvala ti, to mi je trebalo....