Форум → Программирование → PHP для идиотов → поиск в базе данных
поиск в базе данных
-
Возникла проблема поиска по БД.
Организация БД, например, автомобилей:
autos
| id | title | description | …
| 1 | nissan | Good Car! | …
…
autoparts
| id | name | weight | …
| 1 | motor | 480 | …
| 2 | tire | 100 | …
…
connections
| car | autopart |
| 1 | 2 |
…
Форма ввода:
Пользователь, указывает запчасти, например: мотор, шины. (array of autoparts).
Также пользователь указывает: "искать включительно с указанными запчастями" или "искать только с указанными запчастями".
Нужно вывести машины, которые соответствуют запросу.
Как это хоть приблизительно можно реализовать? -
3 июля 2009 г. 3:15, спустя 4 минуты 42 секунды
тебя поиск интересует или вывод результатов?https://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 3:22, спустя 7 минут 18 секунд
интересует сама организация поиска в бд, думал о вложенных select`ах, сначала выбирать по первой запчасти, потом в том, что вышло, по второй и так далее.
потом думал, о создании временной таблице, в которую запись, например, только по первой запчасти, а потом как -то из нее удалять не нужное, после чего вытащить из нее результат, то есть в принципе хоть какой-нить алгоритм я придумал, а вот как это в MySQL организовать я не знаю -
3 июля 2009 г. 3:24, спустя 2 минуты 24 секунды
ты знаешь что-нибудь про join?https://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 3:30, спустя 5 минут 56 секунд
возможно он объединяет таблицы по какому нибудь признакуСпустя 277 сек.может где нибудь есть статьи про подобный тип поиска? -
3 июля 2009 г. 3:32, спустя 1 минуту 32 секунды
Да, это для объединения результатов из разных таблиц, я так думаю это то, что тебе нужно?https://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 3:45, спустя 13 минут 34 секунды
adword, ну не совсем, может я не правильно задал вопрос. Допустим, еще пример.
Разбиваю текст "Малинки" (Какие же вкусные бывают красные малины) по словам, и записываю в таблицу
words
| id | word |
——————-
| 1 | Какие |
| 2 | же |
| 3 | вкусные |
| 4 | бывают |
| 5 | красные |
| 6 | малины |
Далее записываю название текста в отдельную таблицу:
texts
| id | title |
——————-
| 1 | Малинки |
После чего создаю связи
connections
| text_id | word_id |
——————-
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
Добавляю новый текст "Клубнички" (Вкусные и красные, епть!), опять разбиваю по словам, "красные" записывать не буду, так как есть уже.
"вкусные" тоже, добавлю "епть" и "и"(про "и" не знаю еще, стоит ли добавлять).
words
| id | word |
——————-
| 1 | Какие |
| 2 | же |
| 3 | вкусные |
| 4 | бывают |
| 5 | красные |
| 6 | малины |
| 7 | епть |
| 8 | и |
Теперь в таблицу texts, добавляю "Клубнички":
texts
| id | title |
——————-
| 1 | Малинки |
| 2 | Клубнички |
и опять создаю связи:
connections
| text_id | word_id |
——————-
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 2 | 3 |
| 2 | 8 |
| 2 | 5 |
| 2 | 7 |
——————————————————————————————————-
Пользователь вводит запрос: "красные, вкусные" и указывает "искать включительно с указанными словами"
Результат:
"Клубнички"
запрос: "красные", "искать включительно с указанными словами"
результат:
"Малинки", "Клубнички"
____________________________________
Я просто не знаю как это сделать с помощью JOIN.
-
3 июля 2009 г. 4:07, спустя 21 минуту 34 секунды
дай дамп данных, я составлю тебе joinhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 4:22, спустя 15 минут 4 секунды
Текст:
Малинки
Красные и суперски красные и суперски вкусные
Клубнички
Вкусные и красные
Огурцы
Зеленые и не вкусные
Помидоры
Красные, свежие супер мега помидоры
дамп -
3 июля 2009 г. 4:53, спустя 31 минуту 15 секунд
select `t`.`title` from `words` as `w`
left join `connections` as `c` on `c`.`idWord` = `w`.`id`
left join `titles` as `t` on `t`.`id` = `c`.`idTitle`
where `w`.`word` like "красные";Спустя 131 сек.http://www.codinghorror.com/blog/archives/000976.htmlhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 4:57, спустя 3 минуты 54 секунды
очень благодарен. скажите, а если не сколько слов, то в where добавить or.Спустя 125 сек.adw0rd, скажите, а как создать страничку в wiki, а то я там не могу найти -
3 июля 2009 г. 5:04, спустя 6 минут 55 секунд
очень благодарен. скажите, а если не сколько слов, то в where добавить or.
либо OR, либо AND
***
так же рекомендую поиск делать:- либо через http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
MATCH (col1,col2,…) AGAINST (expr [search_modifier])
не забывая про full-text индексы - либо юзаем sphinx
Спустя 82 сек.adw0rd, скажите, а как создать страничку в wiki, а то я там не могу найти
я делаю так: пишу в поиске название документа и если его нет система предлагает его создать и создаю :)
а вы зарегистрированы в википроекте?https://smappi.org/ - платформа по созданию API на все случаи жизни - либо через http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
-
3 июля 2009 г. 5:11, спустя 7 минут 17 секунд
Спустя 82 сек.adw0rd, скажите, а как создать страничку в wiki, а то я там не могу найти
я делаю так: пишу в поиске название документа и если его нет система предлагает его создать и создаю :)
а вы зарегистрированы в википроекте?
да, только что зарегистрировался, сейчас хочу добавить две функции Imagick:: adaptiveSharpenImage, Imagick:: adaptiveThresholdImage. Я сначала просто попытаюсь перевести, а потом установлю Imagick поиграюсь с ним, и тогда подточу перевод.Спустя 29 сек.а то я получается, что я не вижу о чем пишу, а это очень мешает -
3 июля 2009 г. 5:19, спустя 7 минут 6 секунд
krasun, тогда отредактируйте документ http://wiki.adw0rd.ru/index.php/IMagick (сверху кнопка "править", после авторизации доступна)
посмотрите как там сделано для "Imagick::adaptiveResizeImage…" и подобно сделайте для "Imagick::adaptiveSharpenImage"
после чего сохраните документ и перейдите по созданной вами ссылке, далее редактируйте этот документ, на который перешлиhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
3 июля 2009 г. 5:30, спустя 11 минут 12 секунд
все вроде бы разобралсяСпустя 455 сек.не знаю, почему, но съезжает список параметров, верстаю вроде бы правильно http://wiki.adw0rd.ru/index.php/Imagick:adaptiveSharpenImage#.D0.A1.D0.BF.D0.B8.D1.81.D0.BE.D0.BA_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.BE.D0.B2
Пожалуйста, авторизуйтесь, чтобы написать комментарий!