Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server在同时重复录制_Sql Server_While Loop - Fatal编程技术网

Sql server SQL Server在同时重复录制

Sql server SQL Server在同时重复录制,sql-server,while-loop,Sql Server,While Loop,我想通过使用while循环从两个表中导入数据进行记录 表1:ÜRÜNLER 表2:SABLONLAR 表3:所有产品 SABLONLAR表中包括URUNLER产品的变化 我想将产品变体添加到AllProducts表中 第一个周期正常发生 在2rd循环中,记录被添加为2条记录。 在第三个循环中,记录被添加为3个记录。 在第4个循环中,记录被添加为4个记录。 ... 在第20个循环中,记录被添加为20个记录。 ... 就这样 我哪里出错了 DECLARE @URUNLER TABLE (ID int

我想通过使用while循环从两个表中导入数据进行记录

表1:ÜRÜNLER 表2:SABLONLAR 表3:所有产品 SABLONLAR表中包括URUNLER产品的变化

我想将产品变体添加到AllProducts表中

第一个周期正常发生

在2rd循环中,记录被添加为2条记录。 在第三个循环中,记录被添加为3个记录。 在第4个循环中,记录被添加为4个记录。 ... 在第20个循环中,记录被添加为20个记录。 ... 就这样

我哪里出错了

DECLARE @URUNLER TABLE (ID int, VARYASYONSABLONID int, BARKOD varchar(50), STOKKOD varchar(50), BASLIK varchar(500))

INSERT INTO @URUNLER 
    SELECT ID, VARYASYONSABLONID, BARKOD, STOKKOD, BASLIK 
    FROM URUNLER

DECLARE @ToplamUrun int = (SELECT COUNT(VARYASYONSABLONID) FROM @URUNLER)

DECLARE @SABLONLARALL TABLE ([ID] [int], [STOKKODU] [varchar](500),[INDIRIMLIFIYAT] [decimal](18, 2), [STOKFIYATI] [decimal](18, 2), [STOKFIYATI_OLD] [decimal](18, 2), [OZELLIK1] [varchar](500), [OZELLIK2] [varchar](500), [MALIYETTABLO] [varchar](50), [ISIM1] [varchar](500), [ISIM2] [varchar](500), [MIKTAR] [varchar](500), [MALIYETTUTARI] [decimal](18, 2), [PIYASAFIYATI] [decimal](18, 2), [GTIN] [varchar](500), [MPN] [varchar](500),[BUNDLE] [bit], [SABLONID] [int], [TABLOADET] [int])

INSERT INTO @SABLONLARALL 
    SELECT
        [ID], [STOKKODU], [INDIRIMLIFIYAT], [STOKFIYATI], [STOKFIYATI_OLD],
        [OZELLIK1], [OZELLIK2], [MALIYETTABLO], [ISIM1], [ISIM2],
        [MIKTAR], [MALIYETTUTARI], [PIYASAFIYATI], [GTIN], [MPN],
        [BUNDLE] [bit], [SABLONID], [TABLOADET] 
    FROM
        SABLONLAR

DECLARE @WhileCount int = 0;
DECLARE @While2Count int;
DECLARE @SABLONCOUNT int;

WHILE @WhileCount <= @ToplamUrun
Begin

    SET @While2Count = 0;

    declare @ID int;
    declare @VARYASYONSABLONID int;
    declare @BARKOD varchar(50);
    declare @STOKKOD varchar(50);
    declare @BASLIK varchar(500);
    SELECT @ID = ID, @VARYASYONSABLONID = VARYASYONSABLONID, @BARKOD = BARKOD, @STOKKOD = STOKKOD, @BASLIK = BASLIK from @URUNLER ORDER BY ID OFFSET @WhileCount ROWS FETCH NEXT 1 ROWS ONLY
    
    declare @SABLON Table ([ID] [int],[STOKKODU] [varchar](500),[INDIRIMLIFIYAT] [decimal](18, 2),[STOKFIYATI] [decimal](18, 2),[STOKFIYATI_OLD] [decimal](18, 2),[OZELLIK1] [varchar](500),[OZELLIK2] [varchar](500),[MALIYETTABLO] [varchar](50),[ISIM1] [varchar](500),[ISIM2] [varchar](500),[MIKTAR] [varchar](500),[MALIYETTUTARI] [decimal](18, 2),[PIYASAFIYATI] [decimal](18, 2),[GTIN] [varchar](500),[MPN] [varchar](500),[BUNDLE] [bit],[SABLONID] [int],[TABLOADET] [int])
    Insert into @SABLON select [ID],[STOKKODU],[INDIRIMLIFIYAT],[STOKFIYATI],[STOKFIYATI_OLD],[OZELLIK1],[OZELLIK2],[MALIYETTABLO],[ISIM1],[ISIM2],[MIKTAR],[MALIYETTUTARI],[PIYASAFIYATI],[GTIN],[MPN],[BUNDLE] [bit],[SABLONID],[TABLOADET] from SABLONLAR WHERE SABLONID = @VARYASYONSABLONID

    SET @SABLONCOUNT = (select Count(STOKKODU) from @SABLON)

    While @While2Count <= @SABLONCOUNT
    BEGIN

        declare @IDx int;
        declare @PIYASAFIYATI decimal(18,5);
        declare @STOKFIYATI decimal(18,5);
        declare @OZELLIK1 varchar(255);
        declare @OZELLIK2 varchar(255);
        declare @VSTOKKOD varchar(255);
        SELECT @IDx = ID, @PIYASAFIYATI = PIYASAFIYATI, @STOKFIYATI = STOKFIYATI, @OZELLIK1 = OZELLIK1, @OZELLIK2 = OZELLIK2, @VSTOKKOD = STOKKODU from @SABLON ORDER BY ID OFFSET @While2Count ROWS FETCH NEXT 1 ROWS ONLY

        IF @PIYASAFIYATI is null
        BEGIN
            SET @PIYASAFIYATI = (@STOKFIYATI / 100) * 140;
        END
        declare @KALAN decimal(18,5) = @PIYASAFIYATI % 5;
        if @KALAN > 0
        BEGIN
            SET @PIYASAFIYATI = @PIYASAFIYATI + (5 - @KALAN)
        END
        declare @KALAN2 decimal(18,5) = @STOKFIYATI % 5;
        if @KALAN2 > 0
        BEGIN
            SET @STOKFIYATI = @STOKFIYATI + (5 - @KALAN2)
        END

        select '@WhileCount' = @WhileCount,'@While2Count' = @While2Count

        INSERT INTO [dbo].[ALLProducts]
           ([Baslik]
           ,[Barkod]
           ,[StokKodu]
           ,[PiyasaFiyati]
           ,[SatisFiyati])
        VALUES
           (@BASLIK + ' ' + @STOKKOD + ' ' + REPLACE(@OZELLIK1, 'Tabloların 3''ü', '3 Tablo') + (CASE WHEN @OZELLIK2 is not null THEN ' ' + @OZELLIK2 ELSE '' END)
           ,@BARKOD + REPLACE(@VSTOKKOD, '-', '')
           ,@STOKKOD + @VSTOKKOD
           ,@PIYASAFIYATI
           ,@STOKFIYATI)

        Set @While2Count +=1;
    END

    Set @WhileCount +=1;
END
一定是

形成

艾德·艾特:

URUNLER表包含产品的主要信息

在SABLONLAR表格中,产品的变量值包括尺寸、鞋尺寸、表格尺寸类型

我还将制作一个AllProducts表。每个变体选项将在此表中显示为单个产品

一个简单的例子

这是URUNLER表中的产品

这是Sablonal表中的模板

现在,让我们在AllProducts表中分别保存产品


真正的问题是你为什么要先用一段时间。SQL是一种基于集合的语言,您应该使用基于集合的解决方案。你到底想在这里实现什么?将两个表中的数据组合起来创建一个产品。因此,在所有产品中插入选择*from URUNLER internal join SABLONLAR on URUNLER.STOKKOD=SABLONLAR.STOKKODU?。听@Larnu,忘记为此使用WHILE循环。并且可以提供一个有用的替代方案谢谢你的帮助。