Ответить Новая тема Новый опрос 
 Как сделать выгрузку склада в CSV через SQL-запрос
sergeyspb2012
Cпециалист
Сообщений: 130
Откуда: Санкт-Петербург
Регистрация: 07-06-2014


24-06-2015 05:20
Здравствуйте.

Не секрет, что стандартная выгрузка склада в prestasop не учитывает множество нужных данных.
Нашел SQL-запрос выгрузки склада в файл CSV с полными данными:

Код:
SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, p.price, p.id_tax_rules_group, p.wholesale_price, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) LEFT JOIN ps_category c ON (cp.id_category = c.id_category) LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product) WHERE pl.id_lang = 1 AND cl.id_lang = 1 AND p.id_shop_default = 1 AND c.id_shop_default = 1 GROUP BY p.id_product  


Но, почему то данный SQL-запрос не корректно выводит ссылки на изображение товаров.
Адреса фотографий у ряда товаров содержат одинаковые ссылки, причем такого вида:

Код:
4-http-адрессайтаru-img-p-4-3-43jpg-n2-23-0125ao-750r-5-10010049-0125ao-0950000-095-15622-1-2


И количество товара в файле CSV, генерируемом приведенным выше SQL-запросом, везде нулевое.
Причем в файле CSV, генерируемом стандартной функцией Prestasop, все нормально отображается.
Где искать ошибку? В каком файле находиться стандартная функция SQL выгрузки склада в файл CSV?


Сообщение отредактировано sergeyspb2012 24-06-2015 06:22 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


24-06-2015 20:31
Цитата:( sergeyspb2012 @ 24-06-2015 06:20 Смотреть сообщение )
Но, почему то данный SQL-запрос не корректно выводит ссылки на изображение товаров.

Данный запрос не выгружает изображения!
№ изображения можно получить:
после:
Код:
p.id_shop_default

добавить:
Код:
, MAX(image_shop.`id_image`) id_image

после:
Код:
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)

добавить:
Код:
LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`)
LEFT JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1)
LEFT JOIN `ps_image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = 1)

или подобным способом:
Код:
$link = new Link();
if($cover = Product::getCover(3))
    $image = $link->getImageLink('name', $cover['id_image'], 'type_image');

3 - № товара.

Цитата:( sergeyspb2012 @ 24-06-2015 06:20 Смотреть сообщение )
И количество товара в файле CSV, генерируемом приведенным выше SQL-запросом, везде нулевое.

Обсуждалось: http://prestadev.ru/forum/tema-9953-0.html#pid47485
после:
Код:
p.id_shop_default

добавить:
Код:
,IFNULL(stock.quantity, 0) as q

после:
Код:
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)

добавить:
Код:
LEFT JOIN ps_stock_available stock ON (stock.id_product = p.id_product AND stock.id_shop = 1 AND stock.id_shop_group = 0)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
sergeyspb2012
Cпециалист
Сообщений: 130
Откуда: Санкт-Петербург
Регистрация: 07-06-2014


24-06-2015 23:46
После добавления кода SQL-запрос не сохраняется ввиду ошибки

Код:
Ошибка неопределённого типа "checkedWhere"
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
sergeyspb2012
Cпециалист
Сообщений: 130
Откуда: Санкт-Петербург
Регистрация: 07-06-2014


25-06-2015 00:18
Чего то у меня ничего не получается.

Если сделать такой SQL-запрос

Код:
SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, p.price, p.id_tax_rules_group, p.wholesale_price, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default, MAX(image_shop.`id_image`) id_image FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) LEFT JOIN ps_category c ON (cp.id_category = c.id_category) LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product) LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`) LEFT JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1) LEFT JOIN `ps_image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = 1) WHERE pl.id_lang = 1 AND cl.id_lang = 1 AND p.id_shop_default = 1 AND c.id_shop_default = 1 GROUP BY p.id_product  


то ничего не меняется,

если такой

Код:
SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, p.price, p.id_tax_rules_group, p.wholesale_price, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default, MAX(image_shop.`id_image`) id_image
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
$link = new Link();
if($cover = Product::getCover(3))
$image = $link->getImageLink('name', $cover['id_image'], 'type_image');
WHERE pl.id_lang = 1
AND cl.id_lang = 1
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY p.id_product


то выдает такую вот ошибку при сохранении

Код:
Когда используются большое количество таблиц, каждый атрибут должен быть связан с таблицей.


А количество товаров да, появилось, если добавить соответствующий код, спасибо.
И немного не понял про "3" - № товара, что это за номер?
Верхний пост с "Ошибка неопределённого типа "checkedWhere"" прошу не рассматривать, вероятно, я в первый раз код не так как надо отредактировал


Сообщение отредактировано sergeyspb2012 25-06-2015 01:28 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


25-06-2015 00:51
Цитата:( sergeyspb2012 @ 25-06-2015 01:18 Смотреть сообщение )
$link = new Link();
if($cover = Product::getCover(3))
$image = $link->getImageLink('name', $cover['id_image'], 'type_image');

Это php-код не нужно добавлять его в sql запрос!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
sergeyspb2012
Cпециалист
Сообщений: 130
Откуда: Санкт-Петербург
Регистрация: 07-06-2014


25-06-2015 01:15
Точно. Что то я сегодня совсем заработался)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
VladislavK1991
Новичок
Сообщений: 2
Регистрация: 17-03-2016


17-03-2016 18:44
Цитата:( Алекс @ 24-06-2015 20:51 Смотреть сообщение )
Цитата:( sergeyspb2012 @ 25-06-2015 01:18 Смотреть сообщение )
$link = new Link();
if($cover = Product::getCover(3))
$image = $link->getImageLink('name', $cover['id_image'], 'type_image');
Это php-код не нужно добавлять его в sql запрос!

-2015 20:51
Цитата:( sergeyspb2012 @ 25-06-2015 01:18 Смотреть сообщение )
$link = new Link();
if($cover = Product::getCover(3))
$image = $link->getImageLink('name', $cover['id_image'], 'type_image');
Это php-код не нужно добавлять его в sql запрос!


А каким образом его можно запустить?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


18-03-2016 00:38
Цитата:( VladislavK1991 @ 17-03-2016 19:44 Смотреть сообщение )
А каким образом его можно запустить?

:cray:
Создать php-файл:
Код:
<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'../../../init.php');
$link = new Link();
if($cover = Product::getCover(3))
    $image = $link->getImageLink('name', $cover['id_image'], 'type_image');

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос