Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usunac kilka wierszy z kilku tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
Snoopy
Wiec tak, mam np 3 tabele:
tabela_a ; tabela_b ; tabela_c

i w kazdej z nich sa rozne wiersze z roznymi danymi, i teraz chce wykonac zapytanie ktore usunie mi od razu z tych tabel wiersze gdzie podane pola zawierają konkretny wyraz - a zeby bylo smieszniej to w kazdej tabeli zadane pole ma inna nazwe:
Kod
tabela_a:
id | pole1 | pole2 | nick
1  | wart  | cos   | mietek

tabela_b:
id | poleX | poleY | wlasciciel
1  | wart  | wart  | mietek

tabela_a:
id | poleZ | poleG | adresat
1  | inne  | nic   | mietek



i chce usunac we wszystkich tabelach, wiersze kaj w nick, wlasciciel i adresat wystepuje mietek, jak powinno wygladac zapytanie?
Apo
Cytat
wiersze kaj w nick

rotfl
Z tego co wiem to w mysql nie ma możliwości usuwanie danych z pól których nazw nie znamy. Możesz zrobić tak:
  1. <?php
  2. $tabela = array('nick' => 'tabela_a', 'wlasciciel' => 'tabela_b', 'adresat' => 'tabela_c');
  3. foreach($tabela as $pola => $tab)
  4. {
  5. mysql_query("DELETE FROM '$tab' WHERE '$pola'='mitek'");
  6. }
  7. ?>
Snoopy
znam nazwy pol... tylko chodzi o to ze kazde pole nazywa sie inaczej. ale jestem w stanie wypisac:
-nazwy tabel
-nazwy pol
-wartosc dla pola
spenalzo
Wydaje mi sie, że nie ma co kombinować tylko dać DELETE na wszystkie możliwe warunki - jak bedzie spełniać warunek to sie usunie, a jak nie to nie tongue.gif
Snoopy
no to trudno... jakos se bede musial poradzic z tym...
a jeszcze jedno zeby nie zakladac nowego wątku...

mam te kilka tabel
w kazdej jest tyle samo pól, i mają takie same nazwy
czyli mam np.

tabela_A.pole1, tabela_A.pole2, tabela_A.pole3
tabela_B.pole1, tabela_B.pole2, tabela_B.pole3
tabela_C.pole1, tabela_C.pole2, tabela_C.pole3
tabela_D.pole1, tabela_D.pole2, tabela_D.pole3

i chodzi o to ze musze na stronie wyswietlic dane z tabel WHERE pole1='wartosc'
czyli powinien przeszukac tabele A,B,C,D i wyciagnac z nich wiersze gdzie pole1='wartosc' i pokazac dane z kazdej tabeli osobno

normalnie to daje tablice asocjacyjną i pisze:
$myrow=['pole1'], $myrow=['pole2'], $myrow=['pole3']

ale to dotyczy tylko 1 tabeli, a jak zrobic zeby wyswietlił mi pole2 z tabeli C?
myslalem ze takie cos mi pomoze:
$myrow=['tabela_A.pole2'], $myrow=['tabela_D.pole1']

ale zaraz puknąłem się w głowe biggrin.gif nie prądzi... jest jakaś mozliwosc? w miare prosta? wiem ze zagmatwane smile.gif
FanFataL
  1. DELETE a,b,c
  2. FROM tabela_a
  3. a
  4. LEFT JOIN tabela_b b ON b.wlasciciel=a.nick
  5. LEFT JOIN tabela_c c ON c.adresat=a.nick
  6. WHERE a.nick='mietek';


Pozdrawiam winksmiley.jpg
...
Snoopy
no i gitnie biggrin.gif thx
a nikt nie wie jak rozwiazac moj 2 problem?
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.