2016-06-02 2 views
0

Я создаю базу данных для запросов, так что я возьму запрос как вход, и выход будет подходящим ответом. Вы можете думать об этом, как будто это ответы на вопросы &.Создание базы данных для запросов

Ниже приведены образцы, аналогичные три моих таблиц:

фразы таблицы

Phrase 

id  phrase 
------------------- 
1  what 
2  what is 
3  what is the 

запросы таблица

Inquiry 

id  inquiry 
------------------------ 
1  highest mountain 

ответов стол

Reply 

phrase_id inquiry_id  reply 
----------------------------------------- 
3   1    mount everest 

Пусть вход будет: «Какова самая высокая гора? "

Могу ли я сделать запрос таким образом, что он знает, что„то, что это“является фраза и„высокая гора“является запрос, и показывает ответ как выход?

+0

Google it. Простая ассоциация баз данных. Прочтите руководство. – Martin

+1

[Читать этот учебник] (http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561) – Martin

+0

Мне понравился учебник. Благодаря! – Mohammed

ответ

2

Да, вы можете создать такой запрос присоединившись к вашим 3 таблицам и поиская вопрос в конкатенированной фразе + запрос (хотя я сомневаюсь, что это был бы самый эффективный способ создания такой базы данных, но это выходит за рамки SO и этой темы).

select reply 
from replies r 
inner join phrases p on r.phrase_id=p.id 
inner join inquiries i on r.inquiry_id=i.id 
where concat(p.phrase, ' ', i.inquiry)=lower('searched expression') 

«искомое выражение» - это входной параметр.

+0

Только что заметил, что вы опубликовали очень похожий ответ. Единственная (незначительная) разница, которую я могу найти, заключается в том, что я добавил групповой символ в конкатенацию. Целью этого было обрезать дополнительные символы (например, знак вопроса и т. Д.). – Gadget

+0

Работало. Благодаря! – Mohammed

1

Это рабочая версия, которую я придумал:

SELECT r.reply FROM Reply r LEFT JOIN Phrase p ON r.phrase_id=p.id LEFT JOIN Inquiry i ON r.inquiry_id=i.id WHERE LOWER('What is the highest mountain ?') LIKE LOWER(CONCAT(p.phrase, ' ', i.inquiry, '%')) 
Смежные вопросы