Перейти к содержанию
Официальный форум поддержки Simpla

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


Перейти к решению Решено Пастухов,

Рекомендуемые сообщения

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

 

Есть необходимость выгрузить товары некоторых  категории в 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 ");

 

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

 

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

 

 

Ссылка на сообщение
Поделиться на другие сайты
  • Решение
Надо вместо

INNER JOIN __categories c

 что-то типа

LEFT JOIN __categories c ON c.id=pc.category_id

 

И, скорее всего, в другом месте запроса...
Ссылка на сообщение
Поделиться на другие сайты

 

Надо вместо
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 ");
Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...