Jump to content

Помогите с запросом Mysql


Go to solution Solved by Пастухов,

Recommended Posts

Здравствуйте. 

 

Есть необходимость выгрузить товары некоторых  категории в XML 

 

Для этого создал в таблице s_categories столбец efind

 

Далее  в Categories.php в запросе добавил c.efind

 

 

// Выбираем все категории
		$query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.efind, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.position
										FROM __categories c ORDER BY c.parent_id, c.name");

Далее в шаблоне админки и в контроллерах. 

 

и в самом файле efind.php

 

// Товары
$simpla->db->query("SET SQL_BIG_SELECTS=1");
// Товары
$simpla->db->query("SELECT
 v.price,
 v.id as variant_id,
 p.name as product_name,
 v.name as variant_name,
 c.efind,
 v.position as variant_position,
 p.id as product_id,
 p.url,
 p.annotation,
 pc.category_id
 , i.filename as image
 
					FROM __variants v INNER JOIN __categories c
					
					LEFT JOIN __products p ON v.product_id=p.id
                    LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)	
					LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)
					
					WHERE p.visible AND c.efind >0 AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");

 

Всё на подобии выгрузки в ЯМ. 

 

По такому запросы выводятся все товары. Я в запросах полный ноль. 

 

 

Link to post
Share on other sites

 

Надо вместо
INNER JOIN __categories c
 что-то типа
LEFT JOIN __categories c ON c.id=pc.category_id
 
И, скорее всего, в другом месте запроса...

Спасибо большое. Заработало так: 

 

// Товары
$simpla->db->query("SET SQL_BIG_SELECTS=1");
// Товары
$simpla->db->query("SELECT
 v.price,
 v.id as variant_id,
 p.name as product_name,
 v.name as variant_name,
 c.efind,
 v.position as variant_position,
 p.id as product_id,
 p.url,
 p.annotation,
 pc.category_id
 , i.filename as image
 
					FROM __variants v 
					
					
					LEFT JOIN __products p ON v.product_id=p.id
                    LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)	
					LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)
					LEFT JOIN __categories c ON c.id=pc.category_id
					WHERE p.visible AND c.efind >0 AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");
Link to post
Share on other sites

Ребята, я новичок на форуме, как задавать вопрос? Не найду определенную кнопку

Заходите в нужную тему и нажимаете кнопку Новая тема

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...