Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
115
Зарегистрирован:
03-12-2014, 12:33:15
Здравствуйте, подскажите можно ли вывести список всех товаров с артикулом (из справочника товаров), а рядом привязанные к нему товары всех поставщиков с артикулами?
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Когда вы в справочнике товаров в таблице товаров выбираете определённый товар, на вкладке поставщико вы видите все товары поставщиков (прайсов) которые к нему привязаны.
Если у вас в каталоге несколько товаров имеют одинаковый артикул производителя, но записаны как несколько разных товаров (например с разными наименованиями), то видеть привязанные товары поставщиков вы можете только по одному товару каталога.
Количество сообщений
115
Зарегистрирован:
03-12-2014, 12:33:15
Попробую объяснить на пальцах. На скриншоте показал наглядно. Хотелось бы увидеть таблицу вида
Kuppersberg Lora 90 X 4HPB id54323 и привязанные к нему артикулы el71161755 holod120494 mv20034381 25749 id54323.
В справочнике товаров это можно сделать вручную лишь по одному товару что очень долго, поэтому хотелось бы в excel, чтобы можно было пакетно изменить артикулы.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Предоставьте точный перечень колонок вам нужно экспортировать в Эксель в данном случае.
Самый простой SQL-запрос экспорта для такого случая для экспорта всех товаров будет выглядеть так:
Код
SELECT
G_NAME,
G_SID,
SG_ARTIKUL
FROM TBL_GOODS, TBL_SUPPLIERS_GOODS
WHERE G_ID = SG_G_ID
Количество сообщений
115
Зарегистрирован:
03-12-2014, 12:33:15
Если взять пример из скриншота 2.png, то должна получится вот такая таблица 6.png. Т.е надо наименование товара из справочника поставщиков и все артикулы привязанных к этому товару.
Количество сообщений
135
Зарегистрирован:
23-08-2007, 09:03:21
Цитата
Написал: maxtelt
Если взять пример из скриншота 2.png, то должна получится вот такая таблица 6.png.
Пока из предыдущих описаний этого не следовало.
Экспорт в Эксель подразумевает вывод таблицы (матрицы), которая имеет определенное количество строк и столбцов, а у разных товаров в каталоге количество привязанных товаров поставщиков может быть разным.
Цитата
Написал: maxtelt
надо наименование товара из справочника поставщиков и все артикулы привязанных к этому товару.
Вы имеете в виду не сам список товаров как писали ранее, а матрицу из поставщиков (артикулов) то такого SQL-запроса нет и он требует предварительного программирования как сводный прайс-лист.
По одному товару каталога (артикулу) вы можете экспортировать список поставщиков и артикулов товаров поставщиков.
Код
SELECT
G_NAME as "Наименование товара",
G_SID as "Артикул",
S_NAME as "Поставщик",
SG_ARTIKUL as "Артикул поставщика"
FROM TBL_GOODS, TBL_SUPPLIERS_GOODS, TBL_SUPPLIERS
WHERE G_ID = SG_G_ID
AND SG_S_ID = S_ID
AND G_SID = :ARTIKUL
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Сводный прайс с артикулами поставщиков
Экспорт матрицы (аналогичной сводному прайс-листу) с артикулами поставщиков вы можете сделать при помощи следующего SQL-запроса:
Код
DECLARE @SQL nvarchar(max), @S_ID int, @S_NAME varchar(100);
SET @SQL = 'SELECT';
SET @SQL = @SQL + ' g.G_ID AS "Код"';
SET @SQL = @SQL + ', g.G_NAME AS "Название"';
SET @SQL = @SQL + ', g.G_SID AS "Артикул"';
SET @SQL = @SQL + ', g.PRICE AS "Цена"';
DECLARE cSuppliers CURSOR LOCAL READ_ONLY FOR
select /*TOP 255 */S_ID, S_NAME
from TBL_SUPPLIERS s
where s.S_NOT_USE = 0
order by s.S_NAME ASC;
OPEN cSuppliers;
FETCH NEXT FROM cSuppliers INTO @S_ID, @S_NAME;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @SQL = @SQL + ', (SELECT TOP 1 sg.SG_ARTIKUL FROM TBL_SUPPLIERS_GOODS sg WHERE sg.SG_G_ID = g.G_ID /*AND sg.SG_PRESENT=1 */AND sg.SG_S_ID=' + STR(@S_ID, 10, 0) + ' ORDER BY sg.SG_ID DESC) AS "' + @S_NAME + '"';
FETCH NEXT FROM cSuppliers INTO @S_ID, @S_NAME;
END;
CLOSE cSuppliers;
DEALLOCATE cSuppliers;
SET @SQL = @SQL + ' FROM TBL_GOODS g WHERE g.G_ACTIVE=1/* AND g.G_PRESENT=1*/';
exec sp_executesql @SQL;
В данном SQL-запросе, если к товару каталога привязано несколько товаров одного и того же поставщика (такое бывает, если появляется аналогичная модель но с каким-то усовершенствованием и т.п. но в прайсе идет как отдельный товар), то будет взят артикул последнего добавленного товара поставщика.
Количество сообщений
115
Зарегистрирован:
03-12-2014, 12:33:15
И еще вопрос, как можно будет залить новые артикулы в справочник товаров. К сожалению приходится так извращаться потому что товар на сайте привязан к артикулам которые в справочнике товара а не коду Inetshop. Допустим был товар AEG 47005V9-MN и артикул у него id361086 (G_SID) а мне надо его поменять например на holod177894 при том что код в справочнике товара останется прежним.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Вы строите процесс обновления товаров на сайте не совсем верно. В вашем случае будет рациональнее обновлять товары в интернет-магазине по коду товара программы iNETsHOP, т.к. он уникальный и однозначно идентифицирует товар.
Количество сообщений
115
Зарегистрирован:
03-12-2014, 12:33:15
Подскажите что надо дописать в этот запрос, чтобы выводились товары после определенной даты?
Код
SELECT
product_sku,
product_name,
case
when product_price2 < product_price1*0.91 then product_price1*0.93
when product_price2 >= product_price1*0.91 and product_price2 < product_price1*0.93 then product_price2-50
when product_price2 >= product_price1*0.93 and product_price2 < product_price1*0.94 then product_price2*0.99
when product_price2 >= product_price1*0.94 and product_price2 < product_price1*0.96 then product_price2*0.98
when product_price2 >= product_price1*0.96 and product_price2 < product_price1*0.98 then product_price2*0.97
when product_price2 >= product_price1*0.98 and product_price2 < product_price1*0.99 then product_price2*0.96
when product_price2 >= product_price1*0.99 and product_price2 < product_price1*1.05 then product_price2*0.95
when product_price2 >= product_price1*1.05 and product_price2 < product_price1*1.10 then product_price2*0.93
end as product_pricesell,
product_price1,
product_price2 as Кортинг,
product_price3 as Kuppersperg,
product_price15 as Blanco,
product_price4 as Bosch,
product_price9 as Aeg,
product_price10 as Zanussi,
product_price11 as Gorenje,
product_price14 as Smeg,
product_price21 as JetAir,
product_price22 as Franke,
product_price23 as Kuppersberg1,
product_price25 as Zigmund,
product_price29 as Elica,
product_price31 as Liebherr,
product_price32 as Lava,
product_price8 as Krona
FROM
(
SELECT
G_SID as "product_sku",
G_NAME as "product_name",
price as "product_price1",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 8 AND SG_PRESENT=1) as "product_price2",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 38 AND SG_PRESENT=1) as "product_price3",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 28 AND SG_PRESENT=1) as "product_price15",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 4 AND SG_PRESENT=1) as "product_price4",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 57 AND SG_PRESENT=1) as "product_price9",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 10 AND SG_PRESENT=1) as "product_price10",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 11 AND SG_PRESENT=1) as "product_price11",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 17 AND SG_PRESENT=1) as "product_price14",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 29 AND SG_PRESENT=1) as "product_price21",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 30 AND SG_PRESENT=1) as "product_price22",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 31 AND SG_PRESENT=1) as "product_price23",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 32 AND SG_PRESENT=1) as "product_price25",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 34 AND SG_PRESENT=1) as "product_price29",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 48 AND SG_PRESENT=1) as "product_price31",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 37 AND SG_PRESENT=1) as "product_price32",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 7 AND SG_PRESENT=1) as "product_price8"
FROM TBL_GOODS
WHERE G_ACTIVE = 1
AND G_PRESENT = 1
) t
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Чтобы в данную выборку добавить ограничение по указанной дате, достаточно реализовать условие, например AND G_DATE_EDIT >= '2018-10-28 12:00:00' , чтобы было вот так:
Код
SELECT
product_sku,
product_name,
case
when product_price2 < product_price1*0.91 then product_price1*0.93
when product_price2 >= product_price1*0.91 and product_price2 < product_price1*0.93 then product_price2-50
when product_price2 >= product_price1*0.93 and product_price2 < product_price1*0.94 then product_price2*0.99
when product_price2 >= product_price1*0.94 and product_price2 < product_price1*0.96 then product_price2*0.98
when product_price2 >= product_price1*0.96 and product_price2 < product_price1*0.98 then product_price2*0.97
when product_price2 >= product_price1*0.98 and product_price2 < product_price1*0.99 then product_price2*0.96
when product_price2 >= product_price1*0.99 and product_price2 < product_price1*1.05 then product_price2*0.95
when product_price2 >= product_price1*1.05 and product_price2 < product_price1*1.10 then product_price2*0.93
end as product_pricesell,
product_price1,
product_price2 as Кортинг,
product_price3 as Kuppersperg,
product_price15 as Blanco,
product_price4 as Bosch,
product_price9 as Aeg,
product_price10 as Zanussi,
product_price11 as Gorenje,
product_price14 as Smeg,
product_price21 as JetAir,
product_price22 as Franke,
product_price23 as Kuppersberg1,
product_price25 as Zigmund,
product_price29 as Elica,
product_price31 as Liebherr,
product_price32 as Lava,
product_price8 as Krona
FROM
(
SELECT
G_SID as "product_sku",
G_NAME as "product_name",
price as "product_price1",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 8 AND SG_PRESENT=1) as "product_price2",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 38 AND SG_PRESENT=1) as "product_price3",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 28 AND SG_PRESENT=1) as "product_price15",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 4 AND SG_PRESENT=1) as "product_price4",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 57 AND SG_PRESENT=1) as "product_price9",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 10 AND SG_PRESENT=1) as "product_price10",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 11 AND SG_PRESENT=1) as "product_price11",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 17 AND SG_PRESENT=1) as "product_price14",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 29 AND SG_PRESENT=1) as "product_price21",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 30 AND SG_PRESENT=1) as "product_price22",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 31 AND SG_PRESENT=1) as "product_price23",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 32 AND SG_PRESENT=1) as "product_price25",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 34 AND SG_PRESENT=1) as "product_price29",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 48 AND SG_PRESENT=1) as "product_price31",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 37 AND SG_PRESENT=1) as "product_price32",
(SELECT TOP 1 SG_PRICE FROM TBL_SUPPLIERS_GOODS WHERE SG_G_ID = G_ID AND SG_S_ID = 7 AND SG_PRESENT=1) as "product_price8"
FROM TBL_GOODS
WHERE G_ACTIVE = 1
AND G_PRESENT = 1
AND G_DATE_EDIT >= '2018-10-28 12:00:00'
) t
Если у вас системные настройки отображают дату в другом фотмате, вы можеет посмотреть его выполнив запрос