Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polaczenie DELETE z JOIN na 4 tabelach
Forum PHP.pl > Forum > Bazy danych > MySQL
djbarca
Witam. moglbym to dolaczyc do postu nizej. ale to calkiem inny problem - wiec zrobie nowy temat .. mam strukture tabel
  1.  
  2. CREATE TABLE `druzyny` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `punkty` int(3) NOT NULL,
  5. `nazwa` varchar(250) NOT NULL,
  6. `view` char(1) NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=137 ;
  9.  
  10. CREATE TABLE `druzyny_kategorie` (
  11. `id` int(11) NOT NULL AUTO_INCREMENT,
  12. `nazwa` varchar(250) NOT NULL,
  13. `id_kat` int(11) NOT NULL,
  14. PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=27 ;
  16.  
  17.  
  18. CREATE TABLE `druzyny_kategorie_glowne` (
  19. `id` int(11) NOT NULL AUTO_INCREMENT,
  20. `nazwa` varchar(250) NOT NULL,
  21. PRIMARY KEY (`id`)
  22. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=4 ;
  23.  
  24.  
  25. CREATE TABLE `druzyny_polacz` (
  26. `_id_kat` int(11) NOT NULL,
  27. `_id_druzyny` int(11) NOT NULL
  28. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;


ogolnie rzecz biarąc. tabela druzyny_kategorie_glowne polaczona jest z druzyny_kategorie id=id_kat, a druzyny_polacz polaczona z druzyny_kategorie _id_kat=id_kat


i teraz jest taka sprawa, ze chcialbym usunąc o podanym id kategori glownej (nie podkategori): wszystkie z tabeli druzyny_kategorie_glowne spelniajace warunek id=$id, wszystkie z tabeli druzyny_kategorie spelniajace warunek id_kat = $id, oraz wszystkie z tabeli druzyny_polacz spelniajace warunek _id_kat = id z tabeli druzyny_kategorie .. napisalem Cos takiego, jezeli chodzi o wyswietlenie czegos takiego to jest ok. jednak delete nie dziala .

  1. mysql_query("
  2. DELETE g.id,k.id_kat,p._id_kat,k.nazwa,g.nazwa from
  3. druzyny_kategorie_glowne g LEFT JOIN
  4. druzyny_kategorie k ON k.id_kat=g.id LEFT JOIN
  5. druzyny_polacz p ON p._id_kat=k.id_kat
  6. WHERE k.id_kat='{$id_kat}'
  7. ")
hm?
jmail
po pierwsze zmień silnik bazy na InnoDB

Po drugie poczytaj o kluczach obcych (FOREIGN KEY) i jak je już ustawisz to ustaw z opcją on delete cascade - wtedy Ci kaskadowo pousuwa powiązane dane
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.