![]() |
|
||||||||||
|
|||||
|
Ок. Я примерно так и думал, а допустим если вместо articles.text будет articles.article, то тогда можно сделать будет?
P.S Я понимаю что достал уже глупыми вопросами, но я только начинаю сложные запросы к БД изучать, раньше все обходилось линейностью
__________________
защита информации |
|
|||||
|
Можно будет, если все данные в одну таблицу сложить, а отношение к articles или чему-то еще флагом определять.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Apr 2003
Сообщений: 243
|
Работает - смотря в каком, правда.
Help говорит: UNION is implemented in MySQL 4.0.0 |
|
|||||
|
Регистрация: Dec 2001
Адрес: Moscow
Сообщений: 23
|
во-первых, имя столбца (в pages.text) не может быть зарезервированным словом (в данном случае "text").
во-вторых, если таблицы не связаны, делай 2 запроса к каждой таблице. непонятно, зачем все в один запрос пихать. в третьих, если ищешь в ячейках типа text, то лучше делать полнотекстовый поиск. назначаешь индекс этому столбцу типа fulltext и делаешь запрос типа: SELECT id, name, description, MATCH(intro) AGAINST "поисковая строка" AS relev FROM pages WHERE MATCH(intro) AGAINST "поисковая строка" OR intro LIKE '%поисковая строка%' ORDER BY relev DESC"; где intro - это текстовый столбец (т.е. тип TEXT) с индексом типа FULLTEXT Последний раз редактировалось thorr; 02.06.2006 в 19:14. |
|
|||||
|
Цитата:
CREATE TABLE `text` (`text` INT);
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
|
Цитата:
Для примера: $query_search = "(SELECT id, header, DATE_FORMAT(lastedit,'%Y-%m-%d') AS edate, 0 AS cat, MATCH (header, content) AGAINST ('".$fullstring."') AS relev, 1 AS subj FROM ".DB_PREFIX."pages WHERE header LIKE '%".$searchwords[0]."%' OR content LIKE '%".$searchwords[0]."%'";
if (count($searchwords)>1&&$searchwords[1]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[1]."%' OR content LIKE '%".$searchwords[1]."%'";
if (count($searchwords)>2&&$searchwords[2]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[2]."%' OR content LIKE '%".$searchwords[2]."%'";
$query_search.=" AND view = 1) ";
$query_search.="UNION (SELECT id, header, newsdate, 0, MATCH (header, content) AGAINST ('".$fullstring."') AS relev, 2 AS subj FROM ".DB_PREFIX."news WHERE header LIKE '%".$searchwords[0]."%' OR content LIKE '%".$searchwords[0]."%'";
if (count($searchwords)>1&&$searchwords[1]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[1]."%' OR content LIKE '%".$searchwords[1]."%'";
if (count($searchwords)>2&&$searchwords[2]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[2]."%' OR content LIKE '%".$searchwords[2]."%'";
$query_search.=" AND view = 1) ";
$query_search.="UNION (SELECT id, header, adate, catid, MATCH (header, content) AGAINST ('".$fullstring."') AS relev, 3 AS subj FROM ".DB_PREFIX."article WHERE header LIKE '%".$searchwords[0]."%' OR content LIKE '%".$searchwords[0]."%'";
if (count($searchwords)>1&&$searchwords[1]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[1]."%' OR content LIKE '%".$searchwords[1]."%'";
if (count($searchwords)>2&&$searchwords[2]!="") $query_search.=" ".$method." header LIKE '%".$searchwords[2]."%' OR content LIKE '%".$searchwords[2]."%'";
$query_search.=" AND view = 1) ORDER BY relev DESC LIMIT 0, 30";
![]()
__________________
X Последний раз редактировалось Constantine; 06.06.2006 в 16:57. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|