Привет, у меня есть заявление sql
SELECT *, MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) AS score, MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE) AS sscore
FROM users INNER JOIN groups
WHERE MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) OR MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE)
ORDER BY 'score' Desc
1) Как я могу ЗАКАЗАТЬ по совместному счету?Я имею в виду, что с помощью этого SQL-заявления, он создает счет для первого матча и счет для второго.Как я могу сложить эти две оценки и упорядочить их по этой оценке?
2) Также я знаю, что, поскольку данные не совпадают, INNER JOIN не самый лучший способ.есть ли в любом случае, я могу удалить его?
и, наконец, если я удаляю В БУЛЕВОМ РЕЖИМЕ, когда я использую, например, sim и first_name - это simos, я не получаю результат.На самом деле, я получаю пустой набор результатов в булевом режиме, если я поставлю sim Я получу simos в качестве результата.
РЕДАКТИРОВАТЬ: я ответил на 2-й вопрос, выполнив это
(SELECT `id`,MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE) AS score FROM `users` WHERE MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE))
union (ВЫБРАТЬ groupid
, МАТЧ (имя группы) ПРОТИВ ('? ') КАК СЧЕТ ОТ groups
ГДЕ МАТЧ (имя группы) ПРОТИВ ('? '))
Хотя это и меняет все, так как мне не нужен общий счет, но все еще есть проблема с IN BOOLEAN MODE