2010-01-22 3 views
0

У меня есть следующий выбор, но он повторяет результаты второго внутреннего выбора 3 раза.Повторяющиеся результаты Mysql Union

Может ли кто-нибудь сказать мне, почему это так.

Также, когда я получаю результаты, как я могу узнать, из какой таблицы пришли результаты. 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 

Заранее спасибо

ответ

0

не могу понять, почему вы получаете дубликаты из этого запроса, если:

  1. Там нет дубликатов в исходной таблице появляется
  2. Те же данные в home_content и facilties_table (возможно один из них является видом другого?)

Th е вторую часть вопроса, чтобы решить, какие таблицы содержимое союза исходит из легко решить, добавив постоянную колонку для каждого запроса союза дает вам что-то вроде этого:

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, если это вам подходит.

+0

как использовать результаты этого дополнительного столбца. Как упоминается столбец? –

+0

Это первая колонка в возвращаемом наборе 1 означает home_content, а 2 означает объекты_table – Elemental

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