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


http://inetshop.in.ua/index.php?p=showtopic&toid=451&pp=15&page=1&area=1
10.11.2017 14:20

xlvetal


Посетитель

Количество сообщений   124
Зарегистрирован:   14-11-2015, 14:23:25
Пользовательский запрос на экспорт в excel
Что надо добавить в этот код (и куда его вставить) -

DECLARE @TBL_PROPS TABLE (G_ID int, PROPS varchar(max));
DECLARE @G_ID int, @P_NAME varchar(200), @PG_NAME varchar(200), @GP_VALUE varchar(max);
DECLARE @PROPS nvarchar(max);
DECLARE cGoods CURSOR FOR
SELECT G_ID
FROM TBL_GOODS;

OPEN cGoods;
FETCH NEXT FROM cGoods INTO @G_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @PROPS = '';

DECLARE cProps CURSOR FOR
SELECT DISTINCT ISNULL(GP_VALUE, ''), P_NAME, ISNULL(PG_NAME, '')
FROM TBL_GOODS_PROPS
INNER JOIN TBL_PROPS ON GP_P_ID = P_ID
LEFT OUTER JOIN TBL_PROPS_GROUPS ON P_PG_ID = PG_ID
WHERE GP_G_ID = @G_ID;

OPEN cProps;
FETCH NEXT FROM cProps INTO @GP_VALUE, @P_NAME, @PG_NAME;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF @GP_VALUE <> ''
BEGIN
IF @PG_NAME <> ''
SET @PROPS = @PROPS + 'list/' + @PG_NAME + ';';
SET @PROPS = @PROPS + @P_NAME + ':';
SET @PROPS = @PROPS + @GP_VALUE + '|';
END;
FETCH NEXT FROM cProps INTO @GP_VALUE, @P_NAME, @PG_NAME;
END
CLOSE cProps;
DEALLOCATE cProps;
INSERT INTO @TBL_PROPS(G_ID, PROPS) VALUES (@G_ID, @PROPS);
FETCH NEXT FROM cGoods INTO @G_ID;
END;
CLOSE cGoods;
DEALLOCATE cGoods;

SELECT
g.G_ID as product_id,
g.G_SID as ean,
g.G_NAME as name,
g.G_DESC as short_description,
g.G_DESC_FULL as description,
g.G_REST as qty,
CASE WHEN g.G_PRESENT > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as unlimited,
CASE WHEN g.G_ACTIVE > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as publish,
REPLACE(gr.GR_FULL_NAME, '\', '/') as category,
REPLACE(LTRIM(STR(g.price, 10, 2)), '.', ','),
(SELECT B_NAME FROM TBL_BRANDS b WHERE b.B_ID = g.G_B_ID) as manufacturer,
CASE WHEN g.G_ACTION > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as label,
p.PROPS as extra_fields
FROM TBL_GOODS g, TBL_GROUPS gr, @TBL_PROPS p
WHERE g.G_GR_ID = gr.GR_ID
and g.G_ID = p.G_ID
;

Что бы выгружало еще и столбец тип товара

12.11.2017 01:34

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Экспорт типа товара
Цитата
Написал: xlvetal
Что бы выгружало еще и столбец тип товара


Добавьте строку

(SELECT GT_NAME FROM TBL_GOODS_TYPES gt WHERE gt.GT_ID = g.G_GT_ID) as goodtype

чтобы было так:

Код

SET NOCOUNT ON;
DECLARE @TBL_PROPS TABLE (G_ID int, PROPS varchar(max));
DECLARE @G_ID int, @P_NAME varchar(200), @PG_NAME varchar(200), @GP_VALUE varchar(max);
DECLARE @PROPS nvarchar(max);
DECLARE cGoods CURSOR FOR
SELECT G_ID
FROM TBL_GOODS;

OPEN cGoods;
FETCH NEXT FROM cGoods INTO @G_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @PROPS = '';

DECLARE cProps CURSOR FOR
SELECT DISTINCT ISNULL(GP_VALUE, ''), P_NAME, ISNULL(PG_NAME, '')
FROM TBL_GOODS_PROPS
INNER JOIN TBL_PROPS ON GP_P_ID = P_ID
LEFT OUTER JOIN TBL_PROPS_GROUPS ON P_PG_ID = PG_ID
WHERE GP_G_ID = @G_ID;

OPEN cProps;
FETCH NEXT FROM cProps INTO @GP_VALUE, @P_NAME, @PG_NAME;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF @GP_VALUE <> ''
BEGIN
IF @PG_NAME <> ''
SET @PROPS = @PROPS + 'list/' + @PG_NAME + ';';
SET @PROPS = @PROPS + @P_NAME + ':';
SET @PROPS = @PROPS + @GP_VALUE + '|';
END;
FETCH NEXT FROM cProps INTO @GP_VALUE, @P_NAME, @PG_NAME;
END
CLOSE cProps;
DEALLOCATE cProps;
INSERT INTO @TBL_PROPS(G_ID, PROPS) VALUES (@G_ID, @PROPS);
FETCH NEXT FROM cGoods INTO @G_ID;
END;
CLOSE cGoods;
DEALLOCATE cGoods;

SELECT
g.G_ID as product_id,
g.G_SID as ean,
g.G_NAME as name,
g.G_DESC as short_description,
g.G_DESC_FULL as description,
g.G_REST as qty,
CASE WHEN g.G_PRESENT > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as unlimited,
CASE WHEN g.G_ACTIVE > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as publish,
REPLACE(gr.GR_FULL_NAME, '\', '/') as category,
REPLACE(LTRIM(STR(g.price, 10, 2)), '.', ','),
(SELECT B_NAME FROM TBL_BRANDS b WHERE b.B_ID = g.G_B_ID) as manufacturer,
(SELECT GT_NAME FROM TBL_GOODS_TYPES gt WHERE gt.GT_ID = g.G_GT_ID) as goodtype,
CASE WHEN g.G_ACTION > 0 THEN '&#228;&#224;' ELSE '&#237;&#229;&#242;' END as label,
p.PROPS as extra_fields
FROM TBL_GOODS g, TBL_GROUPS gr, @TBL_PROPS p
WHERE g.G_GR_ID = gr.GR_ID
and g.G_ID = p.G_ID
;

18.11.2017 09:55

xlvetal


Посетитель

Тема начата

Количество сообщений   124
Зарегистрирован:   14-11-2015, 14:23:25
Перестали нормально отображаться unlimited, publish,label



Прикрепленные файлы
экспорт.JPG   ( 3 Просмотров | 356.1 KB )

18.11.2017 14:13

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Мы изменили тот SQL-запрос который вы предоставили, не более.

18.11.2017 14:15

xlvetal


Посетитель

Тема начата

Количество сообщений   124
Зарегистрирован:   14-11-2015, 14:23:25
Можете сделать тогда SQL запрос что бы все нормально работало?

18.11.2017 14:53

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Что именно сделать? Мы изменили тот запрос, который предоставили вы сами. Сравните тот который вы дали в первом посте, и тот который изменен согласно вашей заявки.

19.11.2017 08:02

xlvetal


Посетитель

Тема начата

Количество сообщений   124
Зарегистрирован:   14-11-2015, 14:23:25
Нужен SQL запрос на экспорт всех товаров из справочника товаров в Excel, в котором выгружается колонки: код, наименование, наличие,активность, бренд, артикул,цена продажи 1,тип товара,группа товара.

19.11.2017 13:46

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
В таком случае не понятно, к чему предыдущий SQL-запрос?!?

Цитата
Написал: xlvetal
Нужен SQL запрос на экспорт всех товаров из справочника товаров в Excel, в котором выгружается колонки: код, наименование, наличие,активность, бренд, артикул,цена продажи 1,тип товара,группа товара.


Такой запрос экспорта будет выглядеть приблизительно так:
Код

SELECT
g.G_ID as "код",
g.G_NAME as "наименование",
g.G_PRESENT as "наличие",
g.G_ACTIVE as "активность",
b.B_NAME as "бренд",
g.G_SID as "артикул",
g.price as "цена продажи 1",
gt.GT_NAME as "тип товара",
gr.GR_NAME as "группа товара"
FROM
TBL_GOODS g
INNER JOIN TBL_GROUPS gr on g.G_GR_ID = gr.GR_ID
LEFT OUTER JOIN TBL_BRANDS b on g.G_B_ID = b.B_ID
LEFT OUTER JOIN TBL_GOODS_TYPES gt on g.G_GT_ID = gt.GT_ID