Повторение строк в результате поиска

Mikechem

Новичок
Повторение строк в результате поиска

поиск ищет в 3-х таблицах, в каждой по 2-3 полям, в принципе находит все правильно,
НО если в таблице catalog есть поля name, autor, descr и
в каждом из них есть слово1 в одной и тойже строке
при поиске находит и выводит поочереди все 3-и результата, естественно с одним ID
помогите найти решение как убрать повторы

Пример запроса:
SELECT * FROM catalog_prod WHERE autor LIKE '%Медведев%'
--------------------------------------------------------------------------------
SELECT * FROM catalog_prod WHERE name LIKE '%Медведев%'
--------------------------------------------------------------------------------
SELECT * FROM catalog_prod WHERE descr LIKE '%Медведев%'

внутри запрос выгладит так

$query = "SELECT * FROM ".$tb.$key." WHERE ".$where."";
где ".$tb.$key." принимает значения таблиц базы
а $where = " OR ".$pole." LIKE '%".$words[$i]."%'"; т.е. descr LIKE '%Медведев%' или name LIKE '%Медведев%'
 

Mikechem

Новичок
GROUP BY ID группирует в одном запросе, а у меня их несколько, те запрос к полю1, запрос к полю2 и тд
 

oracloid

совсем кукус
SELECT * FROM catalog_prod
WHERE autor LIKE '%Медведев%'
OR name LIKE '%Медведев%'
OR descr LIKE '%Медведев%'

или еще лучше CONCAT(autor, CONCAT(name, descr)) LIKE '%Медведев%'
ну там еще пробелы между словами, идея понятна

а вообще лучше не искать при помощи LIKE,
используй MATCH ... AGAINST
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Mikechem
А что мешает сделать одним запросом? Зачем 3 раза тащить данные из одной таблицы но по другим условиям?!??!
 

Mikechem

Новичок
а с одним запросом мешает массив из имен таблиц+полей
"pages" => ":descr",
"catalog" => ":name",
"catalog_prod" => ":autor",
"catalog_prod" => ":name",
"catalog_prod" => ":descr",

-~{}~ 14.06.07 15:56:

далее while (list($key, $val) = each ($tables))
а если написать "catalog_prod" => "autor,name,descr",
то тута в $val выводится только одно значение

-~{}~ 14.06.07 18:19:

Спасибо Mr_Max Все решил с MATCH ... AGAINST !!!
$query = "SELECT * FROM ".$tb.$key." WHERE MATCH (".$val.") AGAINST ('".$allkey."' IN BOOLEAN MODE)";

еще раз СПАСИБО
 
Сверху