insert loop -- I"m missing the obvious

insert loop -- I"m missing the obvious

am 10.07.2007 23:01:54 von eighthman11

I have a table on sql server. It has three columns (1-Make) (2-Model)
(3-Quantity Ordered). I'm simplifying this a bit.

Sample data:

Ford Mustang 3
Chevy Camaro 2

I just need a stored procedure that I can run that will insert those
records into a workfile based on the Quantity ordered, so if you have
3 ordered in the first table like above it will insert the columns
Ford and Mustang into the workfile 3 times (3 records) and likewise
the Chevy record Twice for (2 records)

Example results of workfile:

Ford Mustang
Ford Mustang
Ford Mustang
Chevy Camaro
Chevy Camaro

This can't be that difficult but I am not a sql programmer. Any help
would be appreciated.

Re: insert loop -- I"m missing the obvious

am 10.07.2007 23:20:57 von Roy Harvey

You need a Numbers table with the integers 1 through at least the
maximum number from the QuantityOrdered column. Then you can simply:

SELECT Make, Model
FROM TheTable as A
JOIN Numbers as B
ON N.i BETWEEN 1 AND A.QuantityOrdered

Roy Harvey
Beacon Falls, CT

On Tue, 10 Jul 2007 14:01:54 -0700, eighthman11
wrote:

>I have a table on sql server. It has three columns (1-Make) (2-Model)
>(3-Quantity Ordered). I'm simplifying this a bit.
>
>Sample data:
>
>Ford Mustang 3
>Chevy Camaro 2
>
>I just need a stored procedure that I can run that will insert those
>records into a workfile based on the Quantity ordered, so if you have
>3 ordered in the first table like above it will insert the columns
>Ford and Mustang into the workfile 3 times (3 records) and likewise
>the Chevy record Twice for (2 records)
>
>Example results of workfile:
>
>Ford Mustang
>Ford Mustang
>Ford Mustang
>Chevy Camaro
>Chevy Camaro
>
>This can't be that difficult but I am not a sql programmer. Any help
>would be appreciated.

Re: insert loop -- I"m missing the obvious

am 10.07.2007 23:43:45 von Erland Sommarskog

eighthman11 (rdshultz@nooter.com) writes:
> I have a table on sql server. It has three columns (1-Make) (2-Model)
> (3-Quantity Ordered). I'm simplifying this a bit.
>
> Sample data:
>
> Ford Mustang 3
> Chevy Camaro 2
>
> I just need a stored procedure that I can run that will insert those
> records into a workfile based on the Quantity ordered, so if you have
> 3 ordered in the first table like above it will insert the columns
> Ford and Mustang into the workfile 3 times (3 records) and likewise
> the Chevy record Twice for (2 records)
>
> Example results of workfile:
>
> Ford Mustang
> Ford Mustang
> Ford Mustang
> Chevy Camaro
> Chevy Camaro
>
> This can't be that difficult but I am not a sql programmer. Any help
> would be appreciated.

Actually it is not that straightforward, and there is a reason for this:
you would normally not do this. A table is supposed to have a primary key
which uniquely identifies the data, so insert several rows with the same
value isn't exactly normal.

You call this a "workfile" - I assume that this is a temp table of
some sort. Exactly what you will achieve in the end, I don't know. But
it might be that you have approached the actual business problem in the
wrong way.

--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downlo ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books .mspx

Re: insert loop -- I"m missing the obvious

am 11.07.2007 17:51:26 von Roy Harvey

On Tue, 10 Jul 2007 17:20:57 -0400, Roy Harvey
wrote:

>SELECT Make, Model
> FROM TheTable as A
> JOIN Numbers as B
> ON N.i BETWEEN 1 AND A.QuantityOrdered

That last line should have tested B.i, not N.i. The column i is the
integer number column of the Numbers table.

Roy Harvey
Beacon Falls, CT