Moze i u standard SQL. Potrebno je imati pomocnu tabelu brojeva.
Code:
CREATE TABLE [dbo].[Brojevi]
(
[BROJ] [int] NOT NULL PRIMARY KEY CLUSTERED
)
Onda je nekako napunis brojevima od 0 do N, gde je N neki veliki broj, recimo 100,000 ili slicno.
Trebalo bi da se dobije nseto ovako:
Code:
SELECT
Broj
FROM Brojevi
WHERE Broj <=3
Broj
-----------
0
1
2
3
Zamisli sad da imas tabelu Osobe (Ime varchar(50) kja isgleda ovako:
Code:
SELECT *
FROM Osobe
Ime
-------------------------
Cica
Goca
Laza
Maca
Melanija
Pera
Verica
Zika
Ako hoces svako Ime iz tabele Osobe da ispises 3 puta, onda kucas ovakav izraz
Code:
SELECT broj, ime
FROM Brojevi, Osobe
WHERE Broj BETWEEN 1 AND 3
ORDER BY Ime, Broj
-- rezultta:
broj ime
----------- -------------------------
1 Cica
2 Cica
3 Cica
1 Goca
2 Goca
3 Goca
1 Laza
2 Laza
Ovo je kao da celu tabelu Osobe na 'pomnozis' sa tabelom Brojevi.
Za tvoj slucaj, ide ovako:
Code:
CREATE TABLE Roba
(Artikl varchar(50)
, Kolicina int
)
INSERT INTO Roba VALUES ('Jabuke',3)
INSERT INTO Roba VALUES ('Kruske',2)
INSERT INTO Roba VALUES ('Kupus',4)
SELECT * FROM Roba;
Artikl Kolicina
-------------------------------------------------- -----------
Jabuke 3
Kruske 2
Kupus 4
Kveri koji svaki artikl ispisuje onoliko puta koliko pise u koloni Kolicina izgleda ovako:
Code:
SELECT ARtikl, Kolicina, Broj
FROM Roba, Brojevi
WHERE Brojevi.Broj BETWEEN 1 AND Roba.Kolicina
ORDER BY Artikl, Broj
Sam mozes da proveris rezultat.
Ovo ti je kao kod teskih zadataka u matematici, kad ti neko kaze 'dodaj (1+2x) na obe strane jednacine.... Tako smo ovde dodali pomocnu tabelu koja nam je resila problem na veoma jednostavan nacin.