Почему этот SQL INNER JOIN работает, а это нет?

Я все еще довольно плохо знаком с SQL, и яУ меня возникают проблемы, когда я не могу понять, почему один из этих запросов работает нормально, а другой - нет. Это вытекает из моих попытокоптимизировать сложный и медленный запрос.@kalengi предложил то, что выглядит какблестящее решение для меня, но это не таккажется, работает на моем сайте. Вот вопросы.

Это стандартный SQL, который генерирует WordPress (он работает как положено):

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts 
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE 1=1 
AND wp_posts.post_type = 'product'
AND (wp_posts.post_status = 'publish')
AND (
   (wp_postmeta.meta_key = '_visibility' AND CAST(wp_postmeta.meta_value AS CHAR) IN ('visible','catalog'))
   AND  (mt1.meta_key = '_stock_status' AND CAST(mt1.meta_value AS CHAR) = 'instock')
)
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order,wp_posts.post_title asc
LIMIT 0, 10

Это SQL после @kalengi 'Фильтр s обрабатывает его, чтобы объединить несколько INNER JOINs в один (это возвращает 0 результатов):

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts 
INNER JOIN wp_postmeta AS pmta ON (wp_posts.ID = pmta.post_id) 
WHERE 1=1 
AND wp_posts.post_type = 'product'
AND ( wp_posts.post_status = 'publish' )
AND (
  ( pmta.meta_key = '_visibility' AND CAST(pmta.meta_value AS CHAR) IN ( 'visible','catalog' ) )
  AND ( pmta.meta_key = '_stock_status' AND CAST(pmta.meta_value AS CHAR) = 'instock' )
)
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order,wp_posts.post_title asc
LIMIT 0, 10

Может кто-нибудь объяснить, почему второй нене работает для меня?

Ответы на вопрос(2)

Ваш ответ на вопрос