Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - SQL запрос


http://inetshop.in.ua/index.php?p=showtopic&toid=381&area=1&print_post=2412
13.03.2017 18:23

support


Support


Количество сообщений   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-запросе, если к товару каталога привязано несколько товаров одного и того же поставщика (такое бывает, если появляется аналогичная модель но с каким-то усовершенствованием и т.п. но в прайсе идет как отдельный товар), то будет взят артикул последнего добавленного товара поставщика.