Hi all,

I'm trying to figure out a solution to the following problem.

Let's say I have a store with various products. I take inventory of these products on different days. At any given time I want to view what the inventory is for the entire store. I also want to know whether the inventory in the result was taken on that day or was carried forward from a previous date. I may also have to make changes to the inventories previously recorded. I have a few solutions, none of which I'm really happy with.

The first is to create rows that contain the inventory for each product on a given day. If no inventory was taken for a given product then leave the column null.

date_of_inventory       | product a     | product b     | product c
2006-01-02              | 100           | 50            | 25
2006-01-03              | NULL          | 45            | NULL
2006-01-05              | 78            | NULL          | 22

To obtain the inventory on any given day I would have to query each product and find the most recent time that it was updated. With this solution there is a lot of wasted space caused by the NULL's.

Another solution would be to have a start and end date for when the inventory is valid such as:

start_date | end_date | product a | pa_up | product b | pb_up | product c | pc_up
2006-01-02      | 2006-01-03    | 100           | TRUE          | 50            
| TRUE          | 25            | TRUE
2006-01-03      | 2006-01-05    | 100           | FALSE | 45            | TRUE  
        | 25            | FALSE
2006-01-05      | 2006-01-05    | 78            | TRUE          | 45            
| FALSE | 22            | TRUE

With this solution I can quickly retrieve the inventory on any given day and see what inventory was taken on that day (which product update columns are set to TRUE). However, I see the update side of this as a nightmare (especially considering I'm duplicating data).

A third solution could be breaking each product into its own table. This would eliminate the issues with the first two solutions but I would end up with hundreds of tables which I would like to avoid.

Any help on the direction that I should go would be greatly appreciated.

Ian



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to