2014-04-02 3 views
0

Итак, у меня есть база данных с 2 столами, фильмами и PS3. Каждый содержит заголовки. Я получил названия фильмов из списка названий IMDB на основе видеоигр. Не у всех из них есть то же название, что и игра, на которой они основаны, но могут иметь одно или два слова.MySQL, находя аналогичные данные в 2 таблицах

Мне было интересно, как я могу использовать названия на ps3 и сравнить их с фильмами. Я хочу вернуть похожие предметы.

Например, Resident Evil: Apocalypse - это фильм, в котором нет игры под названием Resident Evil: Apocalypse, но на PS3 есть игры Resident Evil с разными именами, поэтому хотелось бы получить эти данные.

Как я могу это сделать? Я пробовал делать

WHERE ps3.titles LIKE '%movie.titles%' 

Но это не работает. Я даже не уверен, что это возможно в MySQL. Спасибо за любые отзывы

ответ

2

Общее совмещение - это высокий порядок. Но с точки зрения синтаксиса, рассмотрим следующее:

WHERE ps3.titles LIKE CONCAT('%',movie.titles,'%') 

MySQL будет видеть movie.title в качестве идентификатора (например, в качестве ссылки на столбец в таблице, указанного в запросе). '%' являются литералами, CONCAT строками литералов вместе со значением из столбца, а затем оператор сравнения LIKE может быть оценен.


Сравнение близких струн - это целый большой липкий воск.

С точки зрения того, что доступно в MySQL, оно очень ограничено.

В двигателе MyISAM есть индексы FULLTEXT, которые могут быть полезны для поиска строк по ключевым словам. (Существует ограничение на нижнюю границу длины строк, которые будут проиндексированы и считаются «совпадением». Я думаю, что по умолчанию 4 символа, что исключает слова типа «А», «из» и «.».

У MySQL также есть оператор сравнения REGEXP, который более мощный, чем оператор сравнения LIKE; но вам придется вручную создавать свои собственные сравнения.

Функция SOUNDEX также полезна для идентификации «близких» совпадений ... как совпадение «Апокалипсис» с «Апокалипсом»; но я не думаю, что это поможет вам подобрать «Апокалипсис» с «Rewind: The Apocalyse Chronicles».

Любое совпадение только по названию будет ограничено и неточно. Вы получите несколько матчей, и чем больше совпадений вы получите, тем больше будет не так.

+0

@ Спасибо за ответ. В любом случае, это много. Благодарю. Как бы вы рекомендовали сделать это лучше? Как сейчас, он соответствует простым словам типа «А» или «Воздух» и т. Д., Возможно, мне придется что-то сделать на Java, чтобы сделать это лучше? – AndyOHart

Смежные вопросы