Поиск в трех одинаковых таблицах

Kostyab

Новичок
Поиск в трех одинаковых таблицах

Привет всем!
Есть три таблицы с одинаковой структурой.
Мне нужно написать скрипт поиска по всем трем таблицам и вывести на экран результаты.
Юзеру предлагается ввести ключевое слово и выбрать поле, по которому будет вестись поиск.
Из формы по GET приходит $s -- ключевое слово и $where -- в каком поле хочет искать.
Структура таблиц tb1, tb2, tb3:
PHP:
id | nazv | adres | tel | email | web
Я делаю так:
PHP:
$query="SELECT * FROM tb1 WHERE $where LIKE '%$s%'
UNION
SELECT * FROM tb2 WHERE $where LIKE '%$s%'
UNION
SELECT * FROM tb3 WHERE $where LIKE '%$s%'
";
$result = $db>query($query);
$amount = mysql_num_rows($result);
if ( $amount > 0 )
{
        снова вызываем тот же запрос и выводим результаты
}
else echo"ничего не найдено";
Однако при больших объемах данных два таких запроса здорово загрузят сервер.
ВОПРОС: как по-грамотному считать $amount в первом запросе?
(p.s. эскейп-функции опущены для упрощения примера.)
 

Kostyab

Новичок
В случае с одной таблицей я делал так:
PHP:
$query="
SELECT count(*) as cnt
FROM tb1
WHERE $where LIKE '%$s%'
";
$result = $db->query($query);
$am = mysql_fetch_array($result);
$amount = $am["cnt"];
Как посчитать такое же $amount, но в случае тремя таблицами?
Спасибо!
 

alpine

Новичок
Kostyab
- Если SELECT VERSION() > 4.1 обернуть юнион селектом
SELECT SUM(cnt) FROM (..здесь твой запрос с юнионом..) as tbl
- Если SELECT VERSION() < 4.1 логику селекта который оборачивает реализовать в коде

-~{}~ 17.12.06 00:22:

- Если совсем не понимаешь о чем я говорю, сделай три запроса с COUNT() и банально сложи результаты в коде php с помощью оператора "+"
 

Kostyab

Новичок
Отлично!
Сделал три запроса. Сложил результат и все получилось отлично.
Код длинный, но нагрузка на сервер, наверное, не сильная.
Спасибо, а то я что-то застрял с этим count()
 
Сверху