Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlenie wszystkich rekordow spelniajacych like z wszystkich tabel w bazie spelniajacych REGEXP lub LIKE
Forum PHP.pl > Forum > Bazy danych > MySQL
test30
witam,
mam baze danych z wieloma tablicami,
zeby wyswietlic wszystkie wyniki z 3 tabel moge napisac tak:
  1. SELECT * FROM tabelapierwsza UNION ALL SELECT * FROM tabeladruga UNION ALL SELECT * FROM tablelatrzecia UNION ALL SELECT * FROM tabelaczwarta

mozna zauwazyc ze wszystkie tabele z ktorych korzystam zaczynaja sie od 'tablela';
jak powinno wygladac poprawna skladnia polecenia aby to wykorzystac?
[kod]SELECT * from nazwatabeli
WHERE nazwatabeli REGEXP 'tabela.+'[/kod];

druga sprawa jest ze chcialbym do tego dodac kwalifikator, ktory sprawdza czy dana wartosc rekordu z tabel spelnia warunek REGEXP lub LIKE;
chodzi mi mniej wiecej o takie cos:
Kod
select * from (wszystkie tabele spelniajace regexp) where (jakakolwiek wartosc z wszystkich kolumn spelnia warunek)


mam nadzieje ze do tej pory mozna bylo mnie zrozumiec, ale powiem jeszcze jak moja baza wyglada:
mam tabele w bazie danych
Kod
tabelapierwsza,
tabeladruga,
tabelatrzecia,
tabelaczwarta,
tabelapiata,
tableaszosta,
tabelasiodma,
+tabela(+kilkaset kolejnych)

ta baza zwieksza sie caly czas wiec nie jest praktyczne uzupelnianie co jakis czas listy baz do skorzystania;
kazda z tabel ma strukture:
[pre]tabelapierwsza:
imie|nazwisko
Jan | Kowalski
Jan | nazwiskodwa
Jerzy|nazwiskotrzy[/pre]
[pre]tabeladruga:
imie|nazwisko
Grzegorz| Nowak
Pan| nazwiskocztery
Jerzy|nazwiskopiec[/pre];

chcialbym jednym poleceniem zwrocic wszystkie imiona i nazwiska ktore spelniaja warunek REGEXP '*a*' lub LIKE '%a%';
reasumujac
Kod
select * from [wszystkie tabele ktorych nazwa zaczyna sie od 'tabela']
gdzie w dowolnych kolumnach wartosc zawiera ciag 'a';
Łukasz O.
  1. <?php
  2. $tabela_wszystkich_tabel = $db->query('SHOW TABLES');
  3.  
  4. foreach($tabela_wszystkich_tabel as $tabela){
  5.  $tabele .= $tabela.',';
  6. }
  7.  
  8. $db->query('SELECT * FROM '.substr($tabele,0,strlen($tabele)-1).' WHERE '.$warunki);
  9. ?>
test30
a czy istnieje mozliwosc zrobienia tego w czystym mysql, chodzi mi o laczenie baz, zeby zapisac to zeby wypisywalo rekordy z union all w petli w czystym mysql
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.