Есть такой запрос:
SELECT
p.post_name,
p.post_title,
r.average_rate AS average,
r.total_reviews AS total
FROM
wp_company_rates r
RIGHT JOIN wp_posts p ON r.post_id = p.ID
WHERE
p.post_type = 'company'
AND p.post_status = 'publish'
ORDER BY
average DESC,
total DESC
Здесь всё работает, как и ожидается, - выводятся все строки из wp_posts, а недостающие с строки с wp_company_rates заполняются NULL.
Однако если добавить JOIN с третьей таблицей:
SELECT
p.post_name,
p.post_title,
r.average_rate AS average,
r.total_reviews AS total
FROM
wp_company_rates r
RIGHT JOIN wp_posts p ON r.post_id = p.ID
JOIN wp_term_relationships t ON r.post_id = t.object_id
WHERE
p.post_type = 'company'
AND p.post_status = 'publish'
ORDER BY
average DESC,
total DESC
то RIGHT JOIN со второй таблицей почему-то начинает работать как INNER JOIN, то есть в выборку попадают только те строки, которые есть в первой таблице, что выглядит не логично, и не понятно, какой влияние оказывает третья таблица на вторую. Поясните пожалуйста, почему так происходит, в сети ничего внятного именно для такого случая не нашел.