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



Спустя 7 минут, 31 секунда (11.01.2010 - 17:08) Ded_Mazay написал(а):
можно и без вывода...

Спустя 18 минут, 58 секунд (11.01.2010 - 17:27) Gabriel написал(а):
SELECT field FROM table1, table2 WHERE pole LIKE value

где-так наверное

Спустя 7 минут, 45 секунд (11.01.2010 - 17:35) sergeiss написал(а):
Для начала сделай поиск по одной таблице. Потом, через UNION, объедини с поиском по другой таблице. Если надо - то и с третьей, четвертой...

С полученным результатом делай всё, что захочешь.

Gabriel - а ты уверен, что этот твой запрос выдаст то, что требуется, а не кучу ненужных и неправильных данных?

Спустя 3 минуты, 44 секунды (11.01.2010 - 17:39) Ded_Mazay написал(а):
Gabriel я таким пробовал, не получилось
sergeiss, спасибо буду пробовать

Спустя 15 минут, 58 секунд (11.01.2010 - 17:54) Gabriel написал(а):
sergeiss
а слово наверное там не просто так стоит tongue.gif
у меня чего-то с union ничего не получается
видать пользую не так

Спустя 2 минуты, 30 секунд (11.01.2010 - 17:57) sergeiss написал(а):
Gabriel - фигня в том, что запросы, содержащие "FROM TABLE1, TABLE2" в принципе не могут делать выборку так, как надо в данном случае smile.gif

А что касается UNION - показывай, что у тебя не получается, только создай отдельную тему. Вместе разберем, что, к чему и как.

Спустя 1 час, 42 минуты, 6 секунд (11.01.2010 - 19:39) Ded_Mazay написал(а):
sergeiss
получается чтото типо этого

$result = mysql_query ("SELECT text FROM news WHERE text LIKE $search UNION SELECT text FROM coments WHERE text LIKE $search");
$myrow = mysql_fetch_array($result);

do
{
echo $myrow['text'];
}
while ($myrow = mysql_fetch_array($result));

Спустя 46 минут, 50 секунд (11.01.2010 - 20:26) sergeiss написал(а):
Ded_Mazay - вот ты на форуме уже скоро будет 3 месяца, как зарегился. В каждой десятой (или в каждой двадцатой) теме идет речь о том, цикл do-while применительно к выборке данных из БД - это ВСЕЛЕНСКОЕ ЗЛО smile.gif Замени его на цикл while{}!!!

Второе. Если уж говорим о запросе, то зачем ты показываешь что-то, кроме запроса? К тому же, взятый отдельно запрос можно заключить в специальные тэги и он будет красиво подсвечен, что позволит его лучше воспринимать.

Вот твой запрос:

SELECT text FROM news WHERE text LIKE $search UNION SELECT text FROM coments WHERE text LIKE $search


Если его написать чуть по-другому, то он будет лучше восприниматься, хотя суть от этого не изменится; ну, и еще надо строки заключить в кавычки:
SELECT text FROM news WHERE text LIKE '$search' 
UNION
SELECT
text FROM coments WHERE text LIKE '$search'


Да, запрос такой будет. И к нему можно еще добавлять выборки из других таблиц. Можно добавить (если есть, конечно, во всех таблицах) колонку с датой. И в конце тогда можно будет добавить сортировку по дате.

И этот запрос можно будет использовать как вложенный запрос для более сложного запроса, если нужна будет еще какая-нибудь обработка, которую нельзя сделать на текущем этапе.

Спустя 3 минуты, 25 секунд (11.01.2010 - 20:29) Ded_Mazay написал(а):
sergeiss спасибо что все разъяснил =)

Спустя 35 минут, 43 секунды (11.01.2010 - 21:05) Ded_Mazay написал(а):
у меня ошибку выбивает:
Цитата
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Y:\home\localhost\www\hospice\tpl2.php on line 121

вот 121 строка:
[code]$myrow = mysql_fetch_array($result);
Ps. без UNION работает все...

Спустя 12 минут, 55 секунд (11.01.2010 - 21:18) sergeiss написал(а):
text в разных таблицах одного и тоже одного типа?

Спустя 7 минут, 39 секунд (11.01.2010 - 21:26) Ded_Mazay написал(а):
sergeiss да

Спустя 8 минут (11.01.2010 - 21:34) sergeiss написал(а):
То есть получаем, что один запрос
SELECT text FROM news WHERE text LIKE '$search'

работает,

и этот запрос работает
SELECT text FROM coments WHERE text LIKE '$search'


а вместе - дают ошибку?

Какая ошибка?
Напиши
mysql_query( ...запрос... ) or die( mysql_error() );

и покажи, какая именно ошибка.

Спустя 10 минут, 32 секунды (11.01.2010 - 21:44) Ded_Mazay написал(а):
странно... ошибку выбивать перестало но ничего не выводиться. когда было по отдеотности тоже ничего не выводилось, но ошибку не выбивало

Спустя 16 минут, 59 секунд (11.01.2010 - 22:01) sergeiss написал(а):
А ты сделай такое условие, чтобы выбиралось и там, и там smile.gif

Спустя 12 минут, 7 секунд (11.01.2010 - 22:13) Ded_Mazay написал(а):
я тут проверил
if (isset($myrow['text']))
{

while ($myrow = mysql_fetch_array($result))
{
echo $myrow['text']."<br>";
}
}
else
{
echo "нет";
}

Получается $myrow['text'] не существует =(

Спустя 16 минут, 3 секунды (11.01.2010 - 22:29) sergeiss написал(а):
Цитата (Ded_Mazay @ 11.01.2010 - 23:13)
if (isset($myrow['text']))

Если ты про эту часть - так да, она не определена на этом этапе. Ты же только дальше определяешь этот массив!!!

Спустя 5 минут, 7 секунд (11.01.2010 - 22:34) Ded_Mazay написал(а):
Цитата (sergeiss @ 11.01.2010 - 19:29)
Ты же только дальше определяешь этот массив!!!

Что-то я не доганяю.... Можешь написать как оно выводиться будет?

Спустя 15 часов, 10 минут, 59 секунд (12.01.2010 - 13:45) maxsim1982i написал(а):
может синтаксическая ошибка раз ни чего не выводит

Спустя 23 минуты, 28 секунд (12.01.2010 - 14:09) sergeiss написал(а):
Цитата (Ded_Mazay @ 11.01.2010 - 23:34)
Что-то я не доганяю.... Можешь написать как оно выводиться будет?

Ну так "догнал" в итоге? smile.gif

Или надо повторить, что ты смотришь, определена ли переменная, на несколько строк выше места, где она реально определена?

Спустя 11 минут, 44 секунды (12.01.2010 - 14:21) Ded_Mazay написал(а):
Не, не догнал... Попробовал сделать все как в уроке Попова, но все равно не получилось... все пустое, только таблица выводиться dry.gif может в компе проблема?

Спустя 52 секунды (12.01.2010 - 14:21) Ded_Mazay написал(а):
Цитата (maxsim1982i @ 12.01.2010 - 10:45)
может синтаксическая ошибка раз ни чего не выводит

Да вроде бы нет....

Спустя 7 минут, 40 секунд (12.01.2010 - 14:29) Gabriel написал(а):
$myrow['text'] определяется в цикле а ты проверяешь ее существование до начала цикла

Спустя 5 часов, 36 минут, 13 секунд (12.01.2010 - 20:05) Ded_Mazay написал(а):
В общем начало выводить результаты, но это при поиске в одной таблице, а с UNION не хочет

Спустя 4 часа, 10 минут, 21 секунда (13.01.2010 - 00:16) Ded_Mazay написал(а):
всем спасибо, что помогли smile.gif
Быстрый ответ:

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