有一数组A(a1,a2,..an) 从一数字开始顺序流水号,如1,2,3,4,..100
(可以理解成按顺序的盒子)
另一数组B(b1,b2,..bn) 也是从一数字开始顺序流水号,如1,2,3,4,..1000
(可以理解成按顺序的球)
A与B的关系:每一个A包含B的数量为K,且都是按顺充包含,如:a1包含b1,b2,...b10
a2包含b11,b12,...b20
(可以理解成按盒的编号顺序放球,每一个盒子的数量为k)
求:1.任一个A中B的编号列表
2.任一个B属于A的编号
另还有两组数
C组C(C1,C2,...Cn) 列出A组数量需要去掉的数字,
(可以理解成按顺序的盒子中坏掉的盒子)
D组D(D1,D2,...Dn) 列出B组数量需要去掉的数字 如,3,7 表示B组数中3和7不存在
(可以理解成按顺序的球中坏掉的球)
A与B的关系还是一样,每一个A包含B的数量为K,但遇到C组和D组数中存在的将跳过,
由下一个数补上
(可以理解成按盒的编号顺序放球,每一个盒子的数量为k,坏掉的盒子和球不用)
同样 求:1.任一个A中B的编号列表
2.任一个B属于A的编号
以上是我实际工作中遇到的一个难题,请大家帮忙解决
7 个解决方案
#1
学习
#2
你是想写程序,还是写存储过程?
#3
這樣放的話數組A中每個元素所包含的數組B的元素個數不一定相同吧
也就是說An中所包括的數組B的元素個數祇能是小於或等於A1(或A2,或A3...或An-1)中所包括的數組B的元素的
換言之,最後一個盒子中的球數應該是小於或等於其他每個盒子中的球數的,是嗎?因為球的數量不一定正好是盒子數量的整數倍
也就是說An中所包括的數組B的元素個數祇能是小於或等於A1(或A2,或A3...或An-1)中所包括的數組B的元素的
換言之,最後一個盒子中的球數應該是小於或等於其他每個盒子中的球數的,是嗎?因為球的數量不一定正好是盒子數量的整數倍
#4
可以设计三张表
1 AB表,字段:A编号,B编号
2 C表,字段:A编号
3 D表,字段:B编号
AB表数据
A编号,B编号
1 1
1 2
...
1 10
2 11
2 12
...
2 20
...
C表数据
A编号
5
8
D表数据
B编号
3
7
你的要求的实现:
求:1.任一个A中B的编号列表
select B编号 from AB where A编号=3 order by B编号
2.任一个B属于A的编号
select A编号 from AB where B编号=11 order by A编号
1.考虑CD任一个A中B的编号列表
select B编号 from AB x where A编号=3
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by B编号
2.任一个B属于A的编号
select A编号 from AB x where B编号=11
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by A编号
1 AB表,字段:A编号,B编号
2 C表,字段:A编号
3 D表,字段:B编号
AB表数据
A编号,B编号
1 1
1 2
...
1 10
2 11
2 12
...
2 20
...
C表数据
A编号
5
8
D表数据
B编号
3
7
你的要求的实现:
求:1.任一个A中B的编号列表
select B编号 from AB where A编号=3 order by B编号
2.任一个B属于A的编号
select A编号 from AB where B编号=11 order by A编号
1.考虑CD任一个A中B的编号列表
select B编号 from AB x where A编号=3
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by B编号
2.任一个B属于A的编号
select A编号 from AB x where B编号=11
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by A编号
#5
上面的not exists语句可以用not in代替,好理解些,但是一般情况not exists效率高些
#6
补充:
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
#7
补充:
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
--------------------------------------------------------------
理论上,任何数据库处理不了无穷大
如果度是很有规律的,可以考虑不使用数据库,在客户端循环解决
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
--------------------------------------------------------------
理论上,任何数据库处理不了无穷大
如果度是很有规律的,可以考虑不使用数据库,在客户端循环解决
#1
学习
#2
你是想写程序,还是写存储过程?
#3
這樣放的話數組A中每個元素所包含的數組B的元素個數不一定相同吧
也就是說An中所包括的數組B的元素個數祇能是小於或等於A1(或A2,或A3...或An-1)中所包括的數組B的元素的
換言之,最後一個盒子中的球數應該是小於或等於其他每個盒子中的球數的,是嗎?因為球的數量不一定正好是盒子數量的整數倍
也就是說An中所包括的數組B的元素個數祇能是小於或等於A1(或A2,或A3...或An-1)中所包括的數組B的元素的
換言之,最後一個盒子中的球數應該是小於或等於其他每個盒子中的球數的,是嗎?因為球的數量不一定正好是盒子數量的整數倍
#4
可以设计三张表
1 AB表,字段:A编号,B编号
2 C表,字段:A编号
3 D表,字段:B编号
AB表数据
A编号,B编号
1 1
1 2
...
1 10
2 11
2 12
...
2 20
...
C表数据
A编号
5
8
D表数据
B编号
3
7
你的要求的实现:
求:1.任一个A中B的编号列表
select B编号 from AB where A编号=3 order by B编号
2.任一个B属于A的编号
select A编号 from AB where B编号=11 order by A编号
1.考虑CD任一个A中B的编号列表
select B编号 from AB x where A编号=3
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by B编号
2.任一个B属于A的编号
select A编号 from AB x where B编号=11
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by A编号
1 AB表,字段:A编号,B编号
2 C表,字段:A编号
3 D表,字段:B编号
AB表数据
A编号,B编号
1 1
1 2
...
1 10
2 11
2 12
...
2 20
...
C表数据
A编号
5
8
D表数据
B编号
3
7
你的要求的实现:
求:1.任一个A中B的编号列表
select B编号 from AB where A编号=3 order by B编号
2.任一个B属于A的编号
select A编号 from AB where B编号=11 order by A编号
1.考虑CD任一个A中B的编号列表
select B编号 from AB x where A编号=3
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by B编号
2.任一个B属于A的编号
select A编号 from AB x where B编号=11
and not exists (
select 1 from C where A编号=x.A编号
)
and not exists (
select 1 from D where B编号=x.B编号
)
order by A编号
#5
上面的not exists语句可以用not in代替,好理解些,但是一般情况not exists效率高些
#6
补充:
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
#7
补充:
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
--------------------------------------------------------------
理论上,任何数据库处理不了无穷大
如果度是很有规律的,可以考虑不使用数据库,在客户端循环解决
a和b只给出起始值,如a1=1,b1=1 ,a和b可以看成是无穷大
k值是可以任意给的
TO:Haiwer(海阔天空) AB用数据库会比较大,数据量要注意是无穷大
--------------------------------------------------------------
理论上,任何数据库处理不了无穷大
如果度是很有规律的,可以考虑不使用数据库,在客户端循环解决