dbTalk Databases Forums  

How to find a hole in records? (next available number)

comp.databases.ms-access comp.databases.ms-access


Discuss How to find a hole in records? (next available number) in the comp.databases.ms-access forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Chapai
 
Posts: n/a

Default How to find a hole in records? (next available number) - 01-07-2005 , 03:43 AM






Hi all!

I need your help to realize algorithm for stored proc or trigger.

tool: SQL

TABLE:

[unique_id] [mynumber] [week]

[unique_id] - bigint,primary key, identity auto-increnment

[week] - int, 1-53, week number
[mynumber] - int, 1 - 7, for every week, daily record one per day, up
to 7 per week

so, for every week we have a mynumber from 1 to 7
or nothing (if no records for that day),

we can insert or delete mynubers in any order, at will

EXAMPLE:

week 1, mynumber 1,2,3 - so if we insert a new record, mynumber value
= 4
week 2, mynumber 1,2,3,5,7 - so next mynumber = 4

QUESTION:

How to use _only_ SQL find a missed numbers for particular week when
I'm insert a records?

Thanks.
Chapai


Reply With Quote
  #2  
Old   
Trevor Best
 
Posts: n/a

Default Re: How to find a hole in records? (next available number) - 01-07-2005 , 04:28 AM






Chapai wrote:
Quote:
Hi all!

I need your help to realize algorithm for stored proc or trigger.

tool: SQL

TABLE:

[unique_id] [mynumber] [week]

[unique_id] - bigint,primary key, identity auto-increnment

[week] - int, 1-53, week number
[mynumber] - int, 1 - 7, for every week, daily record one per day, up
to 7 per week

so, for every week we have a mynumber from 1 to 7
or nothing (if no records for that day),

we can insert or delete mynubers in any order, at will

EXAMPLE:

week 1, mynumber 1,2,3 - so if we insert a new record, mynumber value
= 4
week 2, mynumber 1,2,3,5,7 - so next mynumber = 4

QUESTION:

How to use _only_ SQL find a missed numbers for particular week when
I'm insert a records?
You might get a more elegent solution in comp.databases.ms-sqlserver.

You could create a temp table:
create table #tmp (week int, mynumber int)

then loop through and insert all weeks and days, e.g.

--- code begins ---
declare @week int, @mynumber int
set @week=0
while @week < 53
begin
set @mynumber=0
set @week = @week + 1
while @mynumber < 7
begin
set @mynumber = @mynumber + 1
if not exists(select * from mytable where week=@week and
mynumber=@mynumber)
begin
insert into #tmp (week, mynumber) values (@week, @mynumber)
end
end
end
select week, mynumber from #tmp
--- code ends ---
--
This sig left intentionally blank


Reply With Quote
  #3  
Old   
1185416456 Chapai
 
Posts: n/a

Default Re: How to find a hole in records? (next available number) - 01-07-2005 , 05:21 AM



Hi!

Hmm. Good idea, I fogot about while in sql. thanks


create proc stupidproc ( @week as int )
as

declare @mynumber as int, @availablenumber as int
set @mynumber = 1

WHILE @mynumber < 8
begin
IF NOT EXISTS ( select mynumber from MYTABLE
where mynumber = @mynumber and [week]=@week)
begin
set @availablenumber = @mynumber
break
end
else
set @mynumber = @mynumber + 1
CONTINUE
end

select @availablenumber


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.