Starck43
@Starck43
Web разработчик (Python, PHP, SQL + frontend )

Как присоединить несколько таблиц во вложенном запросе?

Так как я пока новичок в sql, то самостоятельно не могу найти способ как устранить ошибку ниже.
Пытаюсь вывести посты с ценами из присоединенной таблицы wc_product_meta_lookup, для которых есть отметка конвертировать в рубли или ее нет вовсе. Эти таблицы тоже пытаюсь присоединить и тут как раз есть проблема.
Вообще, запрос формирования цен корректен в целом ?
SELECT 
	wp_posts.ID, 
    wp_posts.post_title, 
    wc_product_meta_lookup.minPrice, 
    wc_product_meta_lookup.maxPrice 
FROM 
	wp_posts 
	LEFT JOIN wp_term_relationships tr ON (
		wp_posts.ID = wp_term_relationships.object_id
	) 
	LEFT JOIN (
		SELECT 
			product_id, 
			(min_price * GREATEST(1, t2.meta_value*80, t3.meta_value*80)) as minPrice, 
			(max_price * GREATEST(1, t2.meta_value*80, t3.meta_value*80)) as maxPrice 
		FROM 
            wp_wc_product_meta_lookup as t1 
            LEFT JOIN wp_postmeta as t2 ON t1.product_id = t2.post_id 
                AND t2.meta_key = 'convert_to_rub' 
                AND t2.meta_value = 1 
            LEFT JOIN wp_termmeta as t3 ON wp_term_relationships.term_taxonomy_id = t3.term_id 
                AND t3.meta_key = 'convert_to_rub' 
                AND t3.meta_value = 1 

	) wc_product_meta_lookup ON (
		wp_posts.ID = wc_product_meta_lookup.product_id
	) 
WHERE 
	1 = 1 
	AND wp_term_relationships.term_taxonomy_id IN ( 83, 85 ) 
	AND wp_posts.post_type = 'product' 
	AND wc_product_meta_lookup.minPrice > 0 
GROUP BY 
	wp_posts.ID 
ORDER BY 
	wp_posts.post_name ASC


Ошибка такая:
Unknown column 'wp_term_relationships.term_id' in 'on clause'
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@MaximaXXl
Запрос вцелом непонятен, но пока ошибка в алиасах
UPD.
Попробуйте так:
SELECT 
  wp_posts.ID, 
    wp_posts.post_title, 
    wc_product_meta_lookup.minPrice, 
    wc_product_meta_lookup.maxPrice 
FROM 
  wp_posts 
  LEFT JOIN (
    SELECT 
      product_id, 
      (min_price * GREATEST(1, coalesce(t2.meta_value*80,1), coalesce(t3.meta_value*80),1)) as minPrice, 
      (max_price * GREATEST(1, coalesce(t2.meta_value*80,1), coalesce(t3.meta_value*80),1)) as maxPrice 
    FROM 
            wp_wc_product_meta_lookup as t1 
            LEFT JOIN wp_postmeta as t2 ON t1.product_id = t2.post_id 
                AND t2.meta_key = 'convert_to_rub' 
                AND t2.meta_value = 1 
            JOIN wp_term_relationships tr ON (t1.product_id = tr.object_id AND tr.term_taxonomy_id IN ( 83, 85 ) )
            LEFT JOIN wp_termmeta as t3 ON tr.term_taxonomy_id = t3.term_id 
                AND t3.meta_key = 'convert_to_rub' 
                AND t3.meta_value = 1 

  ) wc_product_meta_lookup ON (
    wp_posts.ID = wc_product_meta_lookup.product_id
  ) 
WHERE 
  1 = 1 
  AND wp_posts.post_type = 'product' 
  AND wc_product_meta_lookup.minPrice > 0 
--GROUP BY wp_posts.ID 
ORDER BY wp_posts.post_name ASC


Пока убрал GROUP BY wp_posts.ID если будут дублиаты, с ними надо разобраться кто дублирует и почему, может надо наложить еще условий
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы