SQL запрос к БД

Автор serch, 11 апреля 2016, 13:12:33

« назад - далее »

serch

Добрый день!
Такой вопрос, не могу решить..
Есть запрос SQL
"SELECT p.id_product, p.active, pl.name, ps.name as psname, p.reference, GROUP_CONCAT(DISTINCT(cl.name) ORDER BY cl.`id_category` SEPARATOR "","") as categories, p.price, p.wholesale_price, p.id_tax_rules_group, 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, tx.id_tax, tx.rate, sp.reduction, sp.reduction_type
| 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_supplier ps ON (p.id_supplier = ps.id_supplier)

| LEFT JOIN ps_tax tx ON (tx.id_tax = p.id_tax_rules_group)
| LEFT JOIN ps_specific_price sp ON (p.id_product = sp.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
|
|"


В строке запроса кусок
GROUP_CONCAT(DISTINCT(cl.name) ORDER BY cl.`id_category` SEPARATOR "","") as categories
Работает нормально но с выводом имен т.е.
DISTINCT(cl.name)
Но если хочу получить не имена а   id_category  то ни чего не выводиться, или говорит что это массив..
GROUP_CONCAT(DISTINCT(cl. id_category  ) ORDER BY cl.`id_category` SEPARATOR "","") as categories
Подскажите, что не так.
Во вложении результаты.
Спасибо!

serch

И еще заметил, что на локале работает по id_category а на хосте не хочет.

coder

Цитата: serch от 11 апреля 2016, 13:26:18
И еще заметил, что на локале работает по id_category а на хосте не хочет.
Кеш отключите на хостинге.
Конф. хостинга какая?

serch

Что интересует в конф. хостинга?

PrestaMan

Вы на хостинге в phpMyAdmin этот запрос тестировали?
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

serch

#5
Не догодался...  GROUP_CONCAT(DISTINCT(cl. id_category  ) ORDER BY cl.`id_category` SEPARATOR "","") as categories
протестировать , сейчас попробую...

serch

#6
Запросы на хосте работают но при установке
GROUP_CONCAT(DISTINCT(cl.id_category) ORDER BY cl.`id_category` SEPARATOR "`,`") as categories
в запрос выводит в поле categories  такое - [BLOB - 33 Байт] - что это?
Результат во вложении.
Спасибо.

Миколас

ЦитироватьBLOB (англ. Binary Large Object — двоичный большой объект) — массив двоичных данных. В SQL BLOB — специальный тип данных, предназначенный, в первую очередь, для хранения изображений, аудио и видео.
Тип должен быть INT.

serch

Вы где имеете в виду?
В базе он и так int(10)...
Если в запросе то как его воткнуть?
Спасибо.

Миколас

ID category - это INT
Когда объединяешь поля GROUP_CONCAT становится строкой.
В результете не работает.

Виталий

#10
SELECT ..., GROUP_CONCAT(DISTINCT(c.id_category) ORDER BY c.`id_category` SEPARATOR ',') as categories, ....
Попробуйте так.
Cоздание интернет сайтов Webstudio UwK

PrestaMan

Цитироватьcl.id_category
В таблице ps_category_lang id_category не является уникальным.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

PrestaMan

#12
Цитата: Виталий от 11 апреля 2016, 16:44:13
SELECT ..., GROUP_CONCAT(DISTINCT(c.id_category) ORDER BY cl.`id_category` SEPARATOR ',') as categories, ....
Попробуйте так.
+1
Опередели.
Толко исправьте
ORDER BY c.`id_category`

Можно еще упростить
SELECT ..., GROUP_CONCAT(c.id_category SEPARATOR ',') as categories, ....
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

serch

#13
Спасибо но результат ноль..
Это не работает....

Давайте попробую поставить вопрос по другому..
Данный запрос отлично работает
Он формируед поле categories строкой состоящей из наименований групп товаров из таблицы ps_category_lang
Формирует нормально..
В данной таблице ps_category_lang есть поле id_category где категория тип int
Как сделать в запросе строку, с этим полем должно быть 10,7,5, и тд, а не  Главная,Каталог, и т.д
Ставлю
GROUP_CONCAT(DISTINCT(cl.id_category) ORDER BY cl.`id_category` SEPARATOR ',') as categories
На локале работает на хостинге нет..
Вот такие дела...
Спасибо.

PrestaMan

У проблемы с хостингом.

Запрос проверил на 3 разных серверах, на локальном тоже. Запрос работает.
GROUP_CONCAT(DISTINCT(c.id_category) ORDER BY cl.`id_category` SEPARATOR ',') as categories,
и так
GROUP_CONCAT(c.id_category SEPARATOR ',') as categories,
Везде возвращает ид категорий через запятую.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!