SQL запрос товара с БД

Автор sus, 09 марта 2016, 16:25:58

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

sus

Добрый день!
Всех с прошедшим праздником!
Вопрос такой.
Есть SQL запрос

SELECT p.id_product, p.active, pl.name, p.reference, GROUP_CONCAT(DISTINCT(cl.name) 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
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 запрос выборку поставщика по умолчанию.
Поле p.reference выдает пустое.
Как бы поставить типа reference_default ?
Спасибо!

Миколас

В базе можешь поменять поле reference
ALTER TABLE `ps_product` CHANGE `reference` `reference` VARCHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'то что тебе нужно';

sus

#2
А при чем тут замена поля таблицы БД?
Вопрос стоит как поставить дополнительно в запрос выше, выборку из таблицы ps_supplier поля name  по id_supplier
Пробовал

SELECT p.id_product, p.active, pl.name, su.name, p.reference, GROUP_CONCAT(DISTINCT(cl.name) 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
FROM ps_product p
...........
LEFT JOIN ps_supplier su ON (p.id_supplier = su.id_supplier)
......


Но выдает ошибку так-как поле  имя pl.name, su.name, одинаковые..


Миколас

ЦитироватьКак бы поставить типа reference_default ?
Какой вопрос такой и ответ.
Поле reference по умолчанию NULL. Как изменить значение по умолчанию я написал.

DarinSr

ЦитироватьЕсть в админ при вводе товара выбор поставщика
Поставщики текущего товара..
По умолчанию отмечен.
Каким образом можно вставить в этот SQL запрос выборку поставщика по умолчанию.
На какой странице?
Смотрите в адресной строке название контроллера, например,
/index.php?controller=AdminProducts&id_product=1&updateproduct&...
Значит это файл
/controllers/admin/AdminProductsController.php
в нем меняете запрос.

coder

Ну еще нужно и &action узнать, чтобы не искать по всему файлу.
Для поставщика это &action=Suppliers, функция processSuppliers()
// Get all available suppliers
$suppliers = Supplier::getSuppliers();

// Get already associated suppliers
$associated_suppliers = ProductSupplier::getSupplierCollection($product->id);

Так что не всегда можно сменить sql запрос в том же контроллере.

sus

#6
Спасибо други за ответы!
Благодарен вам всем кто ответил!
Но здесь такое дело..
Я разработал рабочее место оператора сайта.
Где все в одной проге.
Это отдельная, самостоятельная прога.
Я не в престе на странице...
Чтобы заполнить свою таблицу товарами на сайте, необходимо сделать запрос к базе. Табл. вложение.
Строка запроса:

Стр = "SELECT p.id_product, p.active, pl.name, p.reference, GROUP_CONCAT(DISTINCT(cl.name) 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
| 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 ";


Таблица заполнена , но без поставщика.
Можно поставщиков поставить другим запросом, но хотелось сделать все в одном.
У кого какие соображения?
Спасибо!



coder

SELECT ..., ps.name,...
LEFT JOIN `ps_supplier` ps ON p.`id_supplier` = ps.`id_supplier`

sus

Спасибо!
Но этот вариант я пробовал, выше есть..
Ошибка в том что в выборке два поля с одинаковым именем name.
Так ни едет..
Ошибка одинаковых имен выборки.

coder

SELECT ..., ps.name AS supplier,...
Это же элементарно, что об этом писать.
Справочник по sql командам скачайте.

sus

Спасибо большое!
Ну тормознул немного.. :)
Что-уж так строго, бывает всякое.... 
Спасибо всем за ответы!
Вопрос закрыт!
Всем доброго!