У меня есть следующий выбор, но он повторяет результаты второго внутреннего выбора 3 раза.
Может ли кто-нибудь сказать мне, почему это так.
Также, когда я получаю результаты, как я могу узнать, из какой таблицы пришли результаты. Home_content или objects_table.
SELECT * FROM (SELECT hm_id, hm_name, hm_summary,
MATCH (hm_name, hm_summary) AGAINST ('test') AS score FROM home_content
WHERE MATCH (hm_name, hm_summary) AGAINST ('test') UNION SELECT fac_id,fac_name,
fac_summary, MATCH (fac_title, fac_summary) AGAINST ('test') AS score FROM
facilities_table WHERE MATCH (fac_title, fac_summary) AGAINST ('test')) a
ORDER BY SCORE DESC
Заранее спасибо
Не могу понять, почему вы получаете дубликаты из этого запроса, если:
Вторая часть вопроса о том, как решить, из какой таблицы выводится содержимое союза, легко адресуется путем добавления константного столбца к каждому запросу объединения, дающего вам что-то вроде этого:
SELECT * FROM (SELECT 1,hm_id, hm_name, hm_summary,
MATCH (hm_name, hm_summary) AGAINST ('test') AS score FROM home_content
WHERE MATCH (hm_name, hm_summary) AGAINST ('test') UNION SELECT 2,fac_id,fac_name,
fac_summary, MATCH (fac_title, fac_summary) AGAINST ('test') AS score FROM
facilities_table WHERE MATCH (fac_title, fac_summary) AGAINST ('test')) a
ORDER BY SCORE DESC
В этом случае начальный столбец должен быть равным 1 для таблицы home_content и 2 для объектов_table. Очевидно, строковые константы могут использоваться в стиле similair, если это вам подходит.