2014-10-27 2 views
1

Я пытаюсь использовать полный текст и сопоставлять с несколькими таблицами, но без Join, потому что они не связаны. Я пытался что-то вроде:MATCH AGAINST через несколько таблиц без объединений

SELECT mg_users.username, mg_users.email, mg_uzgajivac.imeuzgajivaca ... 
    FROM mg_users,mg_uzgajivac,mg_buy_it_now,mg_golu ... 
WHERE MATCH(mg_users.username) AGAINST ('rasa') 
    OR MATCH(mg_users.email) AGAINST ('rasa') 
    OR MATCH(mg_uzgajivac.imeuzgajivaca) AGAINST ('rasa') 
    OR MATCH(mg_uzgajivac.mjesto) AGAINST ('rasa') ... 

Но это ничего не возвращает, я не уверен, что я делаю неправильно.

+0

Вы пробовали подзапросы? –

+0

да, он работает с простым запросом, но когда я добавляю больше таблиц, он не вернет ничего –

+0

вы можете попробовать другое имя пользователя? Я удивляюсь, если rasa является ключом, который исключается – Jaylen

ответ

1

Я думаю, что ваша проблема в том, что индексы не обновлены. Вам нужно перестроить свои индексы для MATCH ... ПРОТИВ, чтобы работать правильно.

Если вы используете таблицы MyISAM затем восстановить таблицы восстановят вам индексы

REPAIR TABLE table_name; 

Но если вы используете Innodb таблицы «и вы должны.» Вы можете выполнить поддельную команду ALTER, которая заставит индексы быть перестроены. Это ничего не изменит, но это заставит таблицу перестроить.

ALTER TABLE table_name ENGINE=innodb; 

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

ALTER TABLE mg_users ADD FULLTEXT INDEX (имя пользователя, адрес электронной почты); ALTER TABLE mg_uzgajivac ADD FULLTEXT INDEX (imeuzgajivaca, mjesto);

Тогда ваш запрос будет выглядеть следующим образом

SELECT mg_users.username, mg_users.email, mg_uzgajivac.imeuzgajivaca ... 
FROM mg_users,mg_uzgajivac,mg_buy_it_now,mg_golu ... 
WHERE MATCH(mg_users.username, mg_users.email) AGAINST ('rasa') 
    OR MATCH(mg_uzgajivac.imeuzgajivaca, mg_uzgajivac.mjesto) AGAINST ('rasa') 
    ... 
+0

Это помогло мне. Спасибо :) –

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