Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > поиск по бвум и более таблицам


Автор: americanets 2.5.2007, 14:41
есть таблицы pages и news

Код

CREATE TABLE `pages` (
  `id` bigint(20) NOT NULL auto_increment,
  `website_title` text,
  `website_description` text,
  `name_url` varchar(255) NOT NULL default '',
  `menu_neme` varchar(255) NOT NULL default '',
  `content` text,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `content` (`content`)
);



Код

CREATE TABLE `news` (
  `id` int(11) NOT NULL auto_increment,
  `nazvanie` text,
  `kratko` text,
  `content` text,
  PRIMARY KEY  (`id`)
);


по страницам ищу 

Код

SELECT *, MATCH (content) AGAINST ('$Search') as rel FROM `pages` WHERE `content` LIKE '%$Search%' ORDER BY rel DESC


причем еще проблема в том, что то что из таблицы новости ссылка view-news/$id.html 
а из таблицы pages уменя другой вариант вывода, как определить потом из какой таблицы результат чтоб строить вывод ? 

Автор: mishaSL 3.5.2007, 18:48
Использовать UNION.

Цитата(americanets @  2.5.2007,  14:41 Найти цитируемый пост)
как определить потом из какой таблицы результат чтоб строить вывод ?

Добавить в поля выборки какую-нибудь константу, к примеру:
Код

(SELECT 0,`content`, MATCH (content) AGAINST ('$Search') as rel FROM `pages` WHERE `content` LIKE '%$Search%' ORDER BY rel DESC)
UNION
(SELECT 1,`content`, MATCH (content) AGAINST ('$Search') as rel FROM `news` WHERE `content` LIKE '%$Search%' ORDER BY rel DESC)


При разборе результата выборки, где первое поле 0 - там таблица `pages`, где 1 - `news`

Автор: americanets 5.5.2007, 11:28
вобщем делаю так:

Код

$querySearches="(SELECT 0,`content`, MATCH (content) AGAINST ('$poisk') as rel FROM `pages` WHERE `content` LIKE '%$poisk%' ORDER BY rel DESC)UNION(SELECT 1,`content`, MATCH (content) AGAINST ('$poisk') as rel FROM `news` WHERE `content` LIKE '%$poisk%' ORDER BY rel DESC) ORDER BY rel DESC";
$querySearches = mysql_query($querySearches) or die (mysql_error());

WHILE ($datSearch=mysql_fetch_array($querySearches))  { 
$identi=$datSearch[0];
$title= $datSearch[website_title];
$content=$datSearch[content];
$content=strip_tags($content);
$HTMLData .= "<li><strong><a href=".$datSearch['id'].">".$identi.$title."</a></strong><br><font color=\"#cccccc\">".$content."...</font><br><br>\n"; 
}


могу определить из какой таблицы результат, но , теперь не могу определить заголовок ( `nazvanie` для новостей,  `website_title` для страниц) и id записи для составления ссылки

Автор: americanets 7.5.2007, 12:28
понял, нужно было поля добавить перед MATCH 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)