首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql server中怎么实现双重for循环

2012-10-25 
sql server中如何实现双重for循环题目:百钱买鸡的问题,公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元钱能

sql server中如何实现双重for循环
题目:百钱买鸡的问题,公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元钱能买多少只公鸡、母鸡和小鸡。
这个问题用一个双重for循环很快就能解决,可是我在sql server里面没能找到解决办法,用while循环模拟for循环,一层循环还行,二层循环就有问题了,求解答?

[解决办法]
从题目上看:并没有说 1) 公鸡、母鸡和小鸡总数为100,
也没有说 2) 公鸡、母鸡和小鸡数不能为0
在此,我总结了下大家的回答。楼主是否满意呢?

SQL code
---方法一:SQL77的方法  --drop table #aselect number as x into #a  from master..spt_values where type='p' and number between 0 and 100--把0到100的数据放入表#aselect a.x,b.x y,c.x z from #a a,#a b,#a c where  5*a.x+3*b.x+1.0*c.x/3=100 --筛选出符合要求的组合数--方法二:ssp2009的方法    --DROP TABLE #TBDECLARE @I INT,@J INT,@K INTCREATE TABLE #TB(I INT,J INT,K INT)SELECT @I=0,@J=0,@K=0WHILE @I<100BEGIN    WHILE @J<100    BEGIN        WHILE @K<100        BEGIN            IF(@I*5+@J*3+@K*1.0/3=100)            BEGIN                          INSERT INTO #TB(I,J,K) VALUES(@I,@J,@K)                END            SET @K=@K+1        END        SELECT @J=@J+1,@K=0    END    SELECT @I=@I+1,@J=0,@K=0END--SELECT * FROM #TB WHERE I=0 or J=0 or K=0
[解决办法]
SQL code
/*声明能买的范围表*/create table #TableNum(x int )declare @Num1 intdeclare @Num2 intselect @Num1=0 --至少要买select @Num2=300--最多能买while @Num1<=@Num2begininsert into #TableNum(x) values(@Num1)select @Num1=@Num1+1endselect a.x 公鸡,b.x 母鸡,c.x 小鸡 from #TableNum a,#TableNum b,#TableNum cwhere a.x<=20 and b.x<=33and c.x<=300and 15*a.x+9*b.x+c.x=300  and a.x+b.x+c.x=100--和起来一共100只鸡order by a.x,b.xdrop table #TableNum 

热点排行