请教高手,权重查询的SQL语句
有一张表tab如下:
create table tab
{
id int,
name varchar(20),
priority int, --优先级
rate int --同优先级权重
}
它有一张明细表tab_sub
create table tab_sub
{
id int,
num varchar(20)
}
tab_sub的ID是和主表关联的,数据如下:
tab
id name priority rate
1 aa 3 3
2 bb 3 4
3 cc 2 1
4 ddd 3 1
5 eee 2 5
6 ff 3 3
tab_sub表的话记录可多可少,如下:
id num
1 111111
1 222222
1 33333
2 1111
2 22222
3 1112
4 443322
5 11223
5 6544444
6 3333333
要求如下,写一个SQL或过程,指定需要取的条数,如6条,优先取优先级高(数字越低优先级越高)的任务,其次,在同优先级的任务中根据rate的值(权重)来判断取多取少,
如果不足则从下一优先级中取出凑足指定的数字,取得的结果如下
id num name priority rate
5 11223 eee 2 3
5 6544444 eee 2 3
3 1112 cc 2 1
2 1111 bb 3 4
6 333333 ff 3 3
1 111111 aa 3 3
基本上就是要实现这样的查询,实际的情况还要复杂,还要优先考虑tab_sub表中的子项数量,如果tab_sub中相同权重的任务,tab_sub中的子项总数小于当前能分配的数量的话,那么应该优先将此任务的子项取出来,
各位高手有没有好的实现办法,重要的是速度要足够快~