[ vladislavl @ 22.02.2009. 22:50 ] @
U tabeli se nalazi polje sa numerickom vrednoscu.
Upit treba da vrati isti red onoliko puta kolika je vrednost u polju

Primer:

Podaci:

2
3

Rezultat:

2
2
3
3
3

Ima li neko resenje
Hvala

[ jablan @ 22.02.2009. 23:41 ] @
Ja nemam, al me interesuje šta će ti to.
[ vladislavl @ 22.02.2009. 23:55 ] @
Najjednostavnije,
neki red, u stampi treba ponoviti vise puta, ali nije uvek isti broj puta
Npr. stampa nalepnica.
[ vladislavl @ 23.02.2009. 00:52 ] @
Reseno za ASA Sybase extenziju sto mi je i trebalo

select x.kolic
from x,
lateral( select * from sa_rowgenerator( 1, x.kolic ) ) as y

ali i dalje ostaje da li moze sa ANSI SQL-om bez vendor extenzija.
[ Zidar @ 23.02.2009. 18:37 ] @
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.




[ zeppelin @ 06.03.2009. 23:34 ] @
ma bravo genije, upravo sam hteo da postavim novu temu posle vise od dva sata cimanja.



[Ovu poruku je menjao zeppelin dana 07.03.2009. u 00:57 GMT+1]