2015-03-07 2 views
1

с использованием MySQL, если у вас есть таблица предложений и таблица слов с таблицей «многие-ко-многим», которая содержит их отношения, как бы вы структурировали запрос, чтобы найти предложение который содержит фразу?извлекает отдельное предложение, содержащее слова в порядке

Например, с помощью этих таблиц ...

Words 
1 apples 
2 like 
3 I 
4 used 
5 to 
6 eat 

Sentences 
1 I used to like apples 
2 I used to eat apples 

Words2Sentences 
pkey fk_word fk_sentence 
1 1 1 
2 2 1 
3 3 1 
4 4 1 
5 5 1 
6 1 2 
7 3 2 
8 4 2 
9 5 2 
10 6 2 

Как бы вы структурировать присоединиться и запрос, чтобы найти фразу «используется для». Полный текстовый индекс не соответствует моим потребностям из-за требований к многоязычной поддержке.

ответ

0

Использование INNER JOIN и LIKE в статье WHERE. Смотрите ниже:

SELECT 
     Words,Sentences 
FROM Words A 
INNER JOIN Words2Sentences B A.fk_word=B.fk_word 
INNER JOIN Sentences C B.fk_sentence=C.fk_sentence 
WHERE Sentences LIKE '%used to%' 
+0

я не понимаю, как это отличается от SELECT, предложения FROM предложений WHERE предложения LIKE «% использовал в%. запись конечного результата, к которой мы стремимся, - это строка предложения. Этот запрос вернет запись, подобную «Человек, отказавшийся есть яблоки» – chipmunkrumblestud

0

Использование INNER JOIN ** с ** LIKE в ГДЕ Статье

SELECT ws.pkey,w.words,s.sentences FROM Words2Sentences as ws 
INNER JOIN Words as w ON w.fk_word = ws.fk_word 
INNER JOIN Sentences as s ON s.fk_sentence = ws.fk_sentence 
WHERE s.sentences RLIKE '%[[:>:]] used to [[:<:]]%' GROUP BY ws.pkey ORDER BY ws.pkey 
+0

Я не понимаю, как это отличается от предложения SELECT FROM предложений WHERE предложение LIKE '% used to%'. запись конечного результата, к которой мы стремимся, - это строка предложения. Этот запрос вернет запись, подобную «Человек, отказавшийся есть яблоки». – chipmunkrumblestud

+0

ya он вернется – vikasmcajnu

+0

вы можете использовать '%^used to%' попробовать. – vikasmcajnu

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