Witajcie
Mam w bazie danych 4 tabele, każda ma te same pola: id, slowo, definicja. Chcę teraz przeszukać wszystkie tabele gdzie slowo to 'dom'. Próbowałem coś takiego select * from user_tables where slowo='dom'
, ale jednak nie działa.
Witajcie
Mam w bazie danych 4 tabele, każda ma te same pola: id, slowo, definicja. Chcę teraz przeszukać wszystkie tabele gdzie slowo to 'dom'. Próbowałem coś takiego select * from user_tables where slowo='dom'
, ale jednak nie działa.
spróbuj UNION
A możesz konkretniej? (a tak w ogóle to jeśli miałbym 100 tabel i robiłbym union to chyba byłoby bez sensu trochę)
liczba tabel może ulec zmianie (może się zwiększyć), dlatego poprosiłbym o inne rozwiązanie
OK, ale jeśli tworzę słownik kategorii, a w każdej kategorii mam kilka pojęć, to ma to sens. (Jasne można to wrzucić do jednej tabeli, ale ja chciałbym w kilku)
<?php
$query = "SELECT * FROM %s";
$tables = array("t1", "t2", "t3");
$q = join(array_map(create_function('$x', 'global $query; return sprintf($query, $x);'), $tables), " UNION ");
echo $q;
?>
adamPazdzierz napisał(a):
OK, ale jeśli tworzę słownik kategorii, a w każdej kategorii mam kilka pojęć, to ma to sens. (Jasne można to wrzucić do jednej tabeli, ale ja chciałbym w kilku)
Nie, to nie ma sensu. To jest błąd projektowy. Jak będziesz chciał dodać kategorię to będziesz dodawał nową tabelę? Tak się nie robi.
OK, to zdecyduję się na jedną tabelę. To jeszcze jedno szybkie pytanie. Wynokując select a from tabela where typ='taki'
moze zdarzyć się ze nic nie zostanie zwrócone. Czy da się aby domyślnie w wyniku zamiast pustej odpowiedzi zwracało jakiś dowolnie ustalony String np. test?
adamPazdzierz napisał(a):
moze zdarzyć się ze nic nie zostanie zwrócone. Czy da się aby domyślnie w wyniku zamiast pustej odpowiedzi zwracało jakiś dowolnie ustalony String np. test?
może isnull(...) będzie tutaj pomocna albo if'em w select sprawdzać.
ok, ale isnull jest mssql'owe a ja korzystam z Oracla
A czy takie coś nie powinno być obsłużone po stronie aplikacji? Jeżeli nie ma rekordu to go nie ma.
adamPazdzierz napisał(a):
ok, ale isnull jest mssql'owe a ja korzystam z Oracla
z tego co widzę podobną funkcjonalność w oracle ma nvl(), isnull występuje nie tylko mssql.