[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: поиск по многим таблицам
Lenarfate
есть поиск по нескольким таблицам в mysql. как при этом вывести вместе с найденным текстом имена таблиц? то есть нужно выводить итог поиска с ссылками на страницы.

пример
$res = mysql_query("SELECT SUBSTRING_INDEX(`". IRB_DBPREFIX ."contents`.`text`,' '," . 5 . ") AS `text`, 
SUBSTRING_INDEX(`"
. IRB_DBPREFIX ."events`.`text`,' '," . 5 . ") AS `text`,
SUBSTRING_INDEX(`"
. IRB_DBPREFIX ."news`.`text`,' '," . 5 . ") AS `text`,
SUBSTRING_INDEX(`"
. IRB_DBPREFIX ."spec`.`text`,' '," . 5 . ") AS `text`
FROM `"
. IRB_DBPREFIX ."contents`,
`"
. IRB_DBPREFIX ."events`, `". IRB_DBPREFIX ."news`,
`"
. IRB_DBPREFIX ."reviews`, `". IRB_DBPREFIX ."spec`
WHERE `"
. IRB_DBPREFIX ."contents`.`text` LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'
OR `"
. IRB_DBPREFIX ."events`.`text` LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'
OR `"
. IRB_DBPREFIX ."news`.`text` LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'
OR `"
. IRB_DBPREFIX ."spec`.`text` LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'");


вывожу в цикле типа того
while($row = mysql_fetch_assoc($res))
{
$result .= '<a href="">'. $row['text'] .'...</a><br />';
}


вот тут то и надо как то сформировать ссылку на страницу, где найден текст. подскажите



Спустя 7 минут, 55 секунд (10.12.2010 - 14:26) sergeiss написал(а):
Я чего-то не понял суть этого запроса... Почему бы не сделать так вот, через UNION:

select 'имя_первой_таблицы' as `table_contain`, `text` from `имя_первой_таблицы` where <условие для первой таблицы>
UNION
select
'имя_второй_таблицы' as `table_contain`, `text` from `имя_второй_таблицы` where <условие для второй таблицы>
UNION
... и так далее, пока не будут перечислены все таблицы.

В итоге в первой колонке с именем table_contain будет находится имя искомой таблицы, а в колонке text - найденный текст.

Спустя 9 минут, 51 секунда (10.12.2010 - 14:36) Lenarfate написал(а):
пишет про вторую таблицу Unknown column 'такая то' in 'field list'

Спустя 11 минут, 27 секунд (10.12.2010 - 14:48) sergeiss написал(а):
Lenarfate так ты запрос-то покажи smile.gif

Спустя 4 минуты, 33 секунды (10.12.2010 - 14:52) Lenarfate написал(а):
SELECT `". IRB_DBPREFIX ."contents` AS `table_contain`,
SUBSTRING_INDEX(`text`,' '," . 5 . ") AS `text`
FROM `". IRB_DBPREFIX ."contents`
WHERE `text`
LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'
UNION
SELECT
`". IRB_DBPREFIX ."arhiv` AS `table_contain`,
SUBSTRING_INDEX(`text`,' '," . 5 . ") AS `text`
FROM `". IRB_DBPREFIX ."arhiv`
WHERE `text`
LIKE '%". escapeString(addcslashes($POST['value1'], '%\\_')) ."%'
и тп еще несколько таблиц

Спустя 4 минуты, 36 секунд (10.12.2010 - 14:57) sergeiss написал(а):
Цитата (Lenarfate @ 10.12.2010 - 15:52)
SELECT `". IRB_DBPREFIX ."arhiv` AS `table_contain`,

Вот тут ошибочка wink.gif Ты привык ставить имя таблицы в "обратные кавычки", и это сыграло с тобой злую шутку smile.gif
Потому что тут это имя - это просто символьная строка!!! Обрати внимание, что у меня (в первом ответе этой темы) было написано в обычных одинарных кавычках и это не была ошибка, а было совершенно сознательно так сделано.

Спустя 5 минут, 9 секунд (10.12.2010 - 15:02) Lenarfate написал(а):
))спасибо smile.gif

Спустя 7 минут, 19 секунд (10.12.2010 - 15:09) Lenarfate написал(а):
вот теперь только с Николаевским пагинатором не работает))

Спустя 4 минуты, 6 секунд (10.12.2010 - 15:13) Lenarfate написал(а):
пишет The used SELECT statements have a different number of columns. так то.

Спустя 30 минут, 56 секунд (10.12.2010 - 15:44) sergeiss написал(а):
А это не ко мне вопрос smile.gif Анализируй его пагинатор, что ему там не нравится, почему количество столбцов так важно... Я не знаю.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.