这个惊人的查询效果很好,我很高兴:
SELECT
post_id,
username,
post_title,
description,
post_tags,
post_cats,
MATCH(username) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_username,
MATCH(post_title) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_title,
MATCH(description) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_description,
MATCH(post_tags) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_tags,
MATCH(post_cats) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_cats
FROM topics
WHERE
MATCH(username) AGAINST (+(:keyword) IN BOOLEAN MODE) OR
MATCH(post_title) AGAINST (+(:keyword) IN BOOLEAN MODE) OR
MATCH(description) AGAINST (+(:keyword) IN BOOLEAN MODE)OR
MATCH(post_tags) AGAINST (+(:keyword) IN BOOLEAN MODE)OR
MATCH(post_cats) AGAINST (+(:keyword) IN BOOLEAN MODE)
ORDER BY is_online DESC, (score_username+score_title*0.5+score_description*0.4+score_tags*0.3+score_cats*0.2) DESC
但是现在“描述”在另一个表名称“ topics2”中,具有相同的“ post_id”和每种语言的一列: “ description_en”,“ description_fr”,“ description_it”。
如何用相同的查询选择另一个表,然后使其与所有语言描述一起使用?
答案 0 :(得分:0)
您需要使用JOINS参见Tutorial on joins in MYSQL
答案 1 :(得分:0)
这是添加了JOIN
的查询。我只是包含了描述列之一;您当然需要确定所需的内容,依此类推。
注意:代码未经测试。
SELECT
post_id,
username,
post_title,
description,
post_tags,
post_cats,
MATCH(username) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_username,
MATCH(post_title) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_title,
MATCH(description) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_description,
MATCH(post_tags) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_tags,
MATCH(post_cats) AGAINST (+(:keyword) IN BOOLEAN MODE) AS score_cats,
t2.description_en
FROM topics
INNER JOIN topics2 t2 ON (topics.post_id = t2.post_id)
WHERE
MATCH(username) AGAINST (+(:keyword) IN BOOLEAN MODE) OR
MATCH(post_title) AGAINST (+(:keyword) IN BOOLEAN MODE) OR
MATCH(description) AGAINST (+(:keyword) IN BOOLEAN MODE)OR
MATCH(post_tags) AGAINST (+(:keyword) IN BOOLEAN MODE)OR
MATCH(post_cats) AGAINST (+(:keyword) IN BOOLEAN MODE)
ORDER BY is_online DESC,
(score_username+score_title*0.5+score_description*0.4+score_tags*0.3+score_cats*0.2) DESC
在FROM
子句中仅增加一行。
如您所见,MATCH
根本不影响JOIN
-您只需要指定两个表之间的关系即可。