Добавить другую таблицу в запрос MySQL - PullRequest
2 голосов
/ 21 января 2012

пока у меня есть следующий SQL-запрос, который прекрасно работает:

SELECT *,
  MATCH(title, content_plain_text) AGAINST ('$searchTerm') AS score, 
  (MATCH(title, content_plain_text) AGAINST ('$searchTerm') / maxScore) AS normalisedScore
FROM pages,
  (SELECT MAX(MATCH(title, content_plain_text) AGAINST ('$searchTerm')) AS maxScore 
    FROM pages) maxScoreTable
    WHERE MATCH(title, content_plain_text) AGAINST ('$searchTerm')
    AND active = 1
    ORDER BY score DESC

Итак, теперь я хочу найти другую таблицу с такими же именами полей, как мне это сделать, сохранив при этом рейтинг и т. Д.?

Спасибо!

1 Ответ

0 голосов
/ 28 декабря 2013

Я бы просто union all вашу pages таблицу с другой таблицей (допустим, она называется more_pages).

Конструкция WITH действительно подходит для таких проблем, но, к сожалению, MySQL делаетпока не поддерживаю.Самая элегантная альтернатива, которую я мог бы предложить, - создать представление для инкапсуляции этого объединения:

CREATE VIEW all_pages AS
SELECT * FROM pages
UNION ALL
SELECT * FROM more_pages


SELECT *,
  MATCH(title, content_plain_text) AGAINST ('$searchTerm') AS score, 
  (MATCH(title, content_plain_text) AGAINST ('$searchTerm') / maxScore) AS normalisedScore
FROM all_pages,
  (SELECT MAX(MATCH(title, content_plain_text) AGAINST ('$searchTerm')) AS maxScore 
    FROM all_pages) maxScoreTable
    WHERE MATCH(title, content_plain_text) AGAINST ('$searchTerm')
    AND active = 1
    ORDER BY score DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...