Forum Webscript.Ru

Общие => Базы данных => Тема начата: tarya от 21 Августа 2002, 15:35:19

Название: выборка определенного слова из кучи данных
Отправлено: tarya от 21 Августа 2002, 15:35:19
у меня есть сайт, пока толком не разобрался как работает поиск по сайту у других, но слышалл такую интересную вещь что все данные находятся также в базе данных  и когда чел делает запрос ему отыскивается та инфо и выдается ссылка на страницу,..
я решил чтото подобное сделать но не смог составить запрос чтобы из кучи слов выбралось одно . я написал так
$query = "SELECT * from u_find  where data=\'$word\'";   но это неправильно :(, помогите составить запрос чтооб отыскалось нужное слово.

я обещяю купить книгу по My SQL
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 21 Августа 2002, 15:37:45
нужно чтоб из всей таблицы, скокаб я там не сделал полей все просмотрело и нашло то слово и вывело тут строку.
помогите пожалуста.
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 21 Августа 2002, 15:46:49
Выбирай названия столбцов (EXPLAIN table_name)
Далее строй запрос следующим образом:
SELECT * FROM table_name WHERE col_name1 LIKE \'%$word%\' OR col_name2 LIKE \'%$word%\' OR col_name3 LIKE \'%$word%\' и т.д.
Название: выборка определенного слова из кучи данных
Отправлено: NeoNox от 21 Августа 2002, 15:51:08
tarya , если тебе кто скажет что поиск по форуму это классная вещь -- не верь! Поиск не для этого предназначен:)
http://forums.webscript.ru/search.php?s=&action=showresults&searchid=19596&sortby=lastpost&sortorder=descending
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 21 Августа 2002, 16:01:32
Да, да. Я тож хотел на поиск отправить, тока сам не нашёл то что хотел. А хотел вот это
http://forums.webscript.ru/showthread.php?s=&threadid=6876
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 21 Августа 2002, 17:57:15
тут еще такой вопрос если возможно, как так делается что вместе с найденым словом у меня бы была выборка еще так пару тройку слов что было перед и после найденного слова, чтоб получилось примерно как на обычных поисковиках - набрал запрос, кратко прочитал, тыкнул ссылку и Ура?

как быть, может почитать есть что?
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 22 Августа 2002, 08:16:14
SUBSTR
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 22 Августа 2002, 12:05:16
следуя тематике форума, я бы сказал
LOCATE
SUBSTRING
SUBSTRING_INDEX
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 22 Августа 2002, 14:06:04
Цитировать
LOCATE
SUBSTRING
SUBSTRING_INDEX



как это применять? помогите пожалуста, обещяю купить нигу по SQL
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 22 Августа 2002, 14:36:29
найти позицию, в которой встречается данное слово.
отсчитать от нее 50 знаков взад
отсчитать от нее 50 знаков вперед.
вырезать из поля подстроку с этим значением.

SQL тут не при чем, это банальное программирование, в школе проходят.

Но в общем-то, вариант Александра, когда запрашивается целиком поле, а вырезка производится скриптом, наверное, попроще будет. Если только статьи не большие.
Тем более, что еще наверное LEAST придется использовать.
tarya, как ты думаешь, сколько времени у меня занимает посмотреть, что какая функция делает?
три секунды. Чего и тебе желаю.
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 22 Августа 2002, 15:38:28
не, не могу пока такого наворотить, "SUBSTRING" как этим пользоваться знаю а на другие функции никак не знаю, нучно чтоото почитать, а нечего :( вот жаль, я даже незнаю как определить месторасположение слова того :(

спасибо за помощь
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 22 Августа 2002, 16:03:10
что-то, которое нужно почитать, находится по адресу
http://www.mysql.com
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 22 Августа 2002, 16:12:06
Цитировать
Но в общем-то, вариант Александра, когда запрашивается целиком поле, а вырезка производится скриптом, наверное, попроще будет.

Оплошал малость. Я имел в виду SQL\'евский SUBSTRING.
Цитировать
я даже незнаю как определить месторасположение слова того

Вот решение:

SELECT *,
MID(detail,LOCATE(\'$word\', your_field)-20, 30)
FROM your_table WHERE your_field LIKE \'$word\';
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 22 Августа 2002, 17:12:43
$query = "SELECT * MID (detail , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'$find\'";


вот такой запрос по сути дела получился, но он не верен, пишет Ошибку :(


как жаль
Название: выборка определенного слова из кучи данных
Отправлено: fidget от 22 Августа 2002, 17:36:30
tarya
и какую ошибку оно пишет?
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 22 Августа 2002, 22:40:08
запятую, однако, надо между * и МИД
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 22 Августа 2002, 22:41:57
единственно что, я не понял, МИД берется от поля детайлс, а файнд локейтится в поле дата
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 23 Августа 2002, 08:20:54
Цитировать
SELECT * MID

где запятая.
Цитировать
detail , LOCATE(\'$find\', data

detail и data - должно быть одно поле.
[OFF]Сори я впарился в своём примере[/OFF]
Однако, это уже скорее логическая ошибка.
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 10:51:41
доброе утро.
я подправил строку запроса, получилось
$query = "SELECT * , MID (data , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'$find\'";
где "data" это поле в таблице u_find  где производится поиск $find  - выдает вот такую ошибку: You have an error in your SQL syntax near \'(data , LOCATE(\'Василий\', data) -20, 30) FROM u_find WHERE data LIKE \'Василий\'\' at line 1
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 23 Августа 2002, 10:57:11
Цитировать
MID (data

Пробел убери
MID(data
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 23 Августа 2002, 10:57:50
И купи наконец книжку по мускулю.
:)
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 11:35:02
теперь все таки я пойду и куплю книгу по базе, так как все зароботало без ошибок, только ничего теперь н енаходит, даже если есть то слово хоть ты тресни.
Название: выборка определенного слова из кучи данных
Отправлено: fidget от 23 Августа 2002, 12:00:11
а ты ищешь русские слова или англицкие?
полностью слово или содержащее часть?
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 12:03:27
я всякие перепробовал, все все варианты, и русские и английские и кусками и целиком - ничего
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 23 Августа 2002, 12:04:08
Цитировать
даже если есть то слово хоть ты тресни.

Тебе надо искать подстроку:
$query = "SELECT * , MID (data , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'%$find%\'";
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 12:05:20
код у меня такой (тестовый)

if (isset ($submit_f))
   {
   connect ();   
   $query = "SELECT * , MID(data , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'$find\'";
   $result = mysql_query ($query) or die(mysql_error());
   $num = mysql_num_rows ($result);
         if ($num > \'0\')
         {
         print "";
         while ($row = mysql_fetch_array($result)) :
         $link = $row["link"];
         $word = $row["data"];
         print "
                  
                   ";
         endwhile;
         print  "
$find
$word
";
         }
         else
         {
         print "ничего не найдено";
         }
   }
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 12:16:36
а просто
SELECT * FROM u_find WHERE data LIKE \'$find\'
находит что-нибудь?

а в PHPmyAdmin ты не можешь запрос выполнять?
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 12:23:10
извинните что мучаю вас так сильно, но теперь результат тотже что и при старом запросе:
SELECT * FROM u_find WHERE data LIKE \'%$find%\'

какая разница от $query = "SELECT * , MID(data , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'%$find%\'";
??

если в итоге выводится все тоже.
короче без книги я наверное не разбурусь
Название: выборка определенного слова из кучи данных
Отправлено: Alexandr от 23 Августа 2002, 12:44:50
Сделай так:
$query = "SELECT MID(data , LOCATE(\'$find\', data) -20, 30) FROM u_find WHERE data LIKE \'%$find%\'";
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 13:35:58
короче говоря, очень прошу закрыть тему, я сильно запутался и вас заколебал уже наверное, все равно я ни чего не врублюсь, на слупую втовляя то что вы пишите а это неправильно.

спасибо всем
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 13:46:19
таря, на самом деле ты сделал все ДО конца, а теперь хочешь повернуть обратно.
проблема совсем небольшая.
запросы надо отлаживать не в скрипте, а в mysql
вот если бы ты делал этот запрос в консоли или в phpmyadmin, то вопроса бы просто не возникло..

А проблема твоя примитивная.
У тебя запрошенный текст находится в
MID(data , LOCATE(\'$find\', data) -20, 30)
а ты на экран выводишь
$word
надо писать
MID(data , LOCATE(\'$find\', data) -20, 30) AS pole
и вот это поле уже выводить
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 14:21:05
чесно сказать я думал вы меня вот уже и материть начнете :(, скажете -"заколебал"
то что ты написал все зароботало, спасибо вам большое очень, это очень мне все пригодится я верю, так как я хочу сделать поиск по сайту. обещаю на днях купить книгу и еще и разобраться немногоо более.


спасибо большое всем кто помог, на первый парах все работает, вот потом почитаю еще все в книге и разберусь как сделать чтоб похожии слова тоже отыскивало.
Название: выборка определенного слова из кучи данных
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 14:32:09
чтобы похожие слова отыскивать - книги мало.
Ты знаешь, для некоторых дел в этом мире надо 5 лет в институте учиться.

Странный народ эти веб-заказчики.
почему-то к вчерашнему школьнику, возомнившему себя хирургом, никто не торопится под нож ложиться.
А под веб писать - пожалуйста...
Название: выборка определенного слова из кучи данных
Отправлено: tarya от 23 Августа 2002, 16:11:51
к RomikChef.
знаешь я ни когда не учился :(, как то так жил галимо, ни когда даже не мог толком по математике чтото сложить, 2 была годовая. дерьмо я был, и всякой гадостью страдал.
потом в 15 я уверовал, ... и вся жизнь моя изменилась на 100% и я стал учиться, учиться как мог. а вот в школе сделали все возможное чтобы я возненавидел на всю оставшуюся жизнь обучение.
мне не кто не чего не заказывал из веб и в этом я не нуждаюсь, просто хочу сделать приятное для тех кто этим пользуется.
спасибо тем кто на форуме этом в чем то может помочь и не берет за это ни чего, им и прийдет благословение, мерою полною, утресеною.

спасибо всем кто помог, верю вы не обеднели от помощи этой.