В вашем случае было бы лучше использовать union
SELECT * FROM history_search
right JOIN history_subs ON history_search.keyword = history_subs.keyword
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE
'%$keyword%'
union
SELECT * FROM history_search
left JOIN history_subs ON history_search.keyword = history_subs.keyword
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE '%$keyword%'
Вам нужно использовать полное внешнее объединение, если ваши критерии должны показать результат, если он существует в любой из таблиц.
Более того, если вы используете условие where при полном внешнем соединении, ваш запрос будет неявно преобразован во внутреннее объединение
, поэтому окончательный запрос,
РЕДАКТИРОВАТЬ: очевидно, полное внешнее соединение не поддерживается в MySql. Вот альтернативный подход к полному внешнему соединению
SELECT
*
FROM history_search
LEFT JOIN history_subs
ON history_search.keyword = history_subs.keyword AND history_search.keyword LIKE '%$keyword%'
UNION
SELECT
*
FROM history_subs
LEFT JOIN history_search
ON history_search.keyword = history_subs.keyword AND history_subs.keyword LIKE '%$keyword%`'