Автор Тема: sql запрос для экспорта данных  (Прочитано 50 раз)

12 Октября 2016, 23:29:16
  • Новичок
  • *
  • Сообщений: 35
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Знающие, помогите!
Необходимо "вытащить" данные с сайта.
Все получается, но существующий запрос экспортирует данные без ссылки на изображения.
Сделал запрос с привязкой к изображениям
но что то пошло не так. на данный запрос Presta ругается, говоря: Когда используются большое количество таблиц, каждый атрибут должен быть связан с таблицей.

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, i.id_image, CONCAT("http://yoursite.ru/", p.id_product, "-", i.id_image,"/",pl.link_rewrite,".jpg") AS image_link
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 AND i.cover = 1
WHERE pl.id_lang = 6
AND cl.id_lang = 6
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY p.id_product;

Сильно не ругайтесь, я только учусь.
Лучше помогите, настроить правильный запрос!
13 Октября 2016, 08:21:18
Ответ #1
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
все просто, когда вы копировали запрос, то двойные кавычки  "  заменились на  "
CONCAT("http://yoursite.ru/", p.id_product, "-", i.id_image,"/",pl.link_rewrite,".jpg") AS image_link"  заменить на   "
CONCAT("http://yoursite.ru/", p.id_product, "-", i.id_image,"/",pl.link_rewrite,".jpg") AS image_link
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff
13 Октября 2016, 08:33:52
Ответ #2
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
проверьте правильность построения ссылки на изображение
на 1.6 будет работать такой вариант
CONCAT("http://yoursite.ru/", i.id_image,"-large_default/",pl.link_rewrite,".jpg") AS image_link
  • large_default или другой размер изображения, настраивается в админке (Настройки/Изображения)
  • pl.link_rewrite не играет никакой роли в доступе к изображению, потому можно заменить на что то более полезное, например на ID товара
CONCAT("http://yoursite.ru/", i.id_image,"-large_default/",p.id_product,".jpg") AS image_link
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff
13 Октября 2016, 11:14:03
Ответ #3
  • Новичок
  • *
  • Сообщений: 35
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
все просто, когда вы копировали запрос, то двойные кавычки  "  заменились на  &quot;
CONCAT("http://yoursite.ru/&quot;, p.id_product, "-", i.id_image,"/",pl.link_rewrite,".jpg") AS image_link&quot;  заменить на   "
CONCAT("http://yoursite.ru/", p.id_product, "-", i.id_image,"/",pl.link_rewrite,".jpg") AS image_link

Спасибо!
Надо больше спать. Не увидел оплошность. Поправил.
Но дело, видимо не в этом.
все равно ошибка:
Когда используются большое количество таблиц, каждый атрибут должен быть связан с таблицей.
13 Октября 2016, 12:54:45
Ответ #4
  • Новичок
  • *
  • Сообщений: 35
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
проверьте правильность построения ссылки на изображение
на 1.6 будет работать такой вариант
CONCAT("http://yoursite.ru/", i.id_image,"-large_default/",pl.link_rewrite,".jpg") AS image_link
  • large_default или другой размер изображения, настраивается в админке (Настройки/Изображения)
  • pl.link_rewrite не играет никакой роли в доступе к изображению, потому можно заменить на что то более полезное, например на ID товара
CONCAT("http://yoursite.ru/", i.id_image,"-large_default/",p.id_product,".jpg") AS image_link

исправил

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, i.id_image, CONCAT("http://yoursite.ru/", i.id_image,"-large_default/",p.id_product,".jpg") AS image_link
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 AND i.cover = 1
WHERE pl.id_lang = 6
AND cl.id_lang = 6
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY p.id_product;

не помогло(

Когда используются большое количество таблиц, каждый атрибут должен быть связан с таблицей.
16 Октября 2016, 23:06:48
Ответ #5
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
на Prestashop 1.6.1.1 и MYSQL 5.5 отлично работает

смотрите на название таблиц, может префикс другой, в примере "ps_"
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff