[ mish_ns @ 14.03.2012. 12:45 ] @
pozdrav svima...
interesuje me sledece.
Imam jednu tabelu (tip_proizvoda) gde definisem grupu proizvoda i opseg sifara...
id_tip - id broj grupe
naziv - naziv grupe
min - minimum osega
max - max opsega

Npr.
id_tip naziv min max
0002 Voće 300 500

E sad u drugoj tabeli proizvodi imam:
id - id broj
rel_id_tip - relacija sa poljem id_tip iz prethodne tabele
sifra - sifra proizvoda iz opsega 300-500

E sad ako imam sifre 300,301,302,310,311..
Uradio sam upit da vrati prvu sifru koje fale između (303 u ovom slučaju)
Međutim, problem mi je kad imam šifre koje nisu počele od početka opsega...
Npr. 340,341,346,347,348....
Kako uraditi upit ili proceduru da prepozna da sifra 300 nije iskorišćena, jer sa upitom koji sam ja uradio dobiću 342, a trebala bi mi šifra 300?

UPIT
Code:

SELECT t1.sifra+1 AS prva_sledeca
FROM proizvodi AS t1
LEFT JOIN proizvodi AS t2 ON t1.sifra+1 = t2.sifra
WHERE t2.sifra IS NULL and t1.rel_id_tip=0004
ORDER BY t1.sifra LIMIT 1;


HVALA
[ Marko_R @ 14.03.2012. 15:43 ] @
Cisto praktican savet, koristi max+1, jer ima dovoljno sifara, a mozes da stavis i 64-bitnu sifru.
[ djoka_l @ 15.03.2012. 00:14 ] @
Evo da ti predložim jedno rešenje, iako nisam MySql stručnjak (možda će bogdan.kecman da da bolje rešenje ili da potvrdi da ovo moje pije vodu).

Prvo, ne sviđa mi se tvoj koncept, ali evo predloga kako da nađeš prvi slobodan broj.
Upotrebiću tehniku koja je opisana ovde: http://www.roseindia.net/sql/mysql-example/mysql-rank.shtml
a koja dodaje OLAP funkciju RANK koje nema u MySQL-u

Code (sql):

SET @rank=299

SELECT MIN(rank)
FROM (
   SELECT @rank:=@rank+1 AS rank, sifra
   FROM proizvodi
   WHERE id_tip = 0002
   ORDER BY sifra)
WHERE rank<sifra
 


Napominjem da upit nisam probao (nemam MySQL ovde gde pišem).

Druga, takođe neproverena verzija:

Code (sql):

SET @rank=299

SELECT @rank:=@rank+1 AS rank
FROM proizvodi
WHERE id_tip = 0002
WHERE @rank<sifra
ORDER BY sifra
 


[Ovu poruku je menjao djoka_l dana 15.03.2012. u 01:48 GMT+1]
[ bogdan.kecman @ 15.03.2012. 01:18 ] @
necu nista da potvrdjujem osim da je ceo koncept ispocetka je pogresan
[ mish_ns @ 15.03.2012. 05:50 ] @
Hvala svima...

Citat:
necu nista da potvrdjujem osim da je ceo koncept ispocetka je pogresan


Šta da radim ovakvu sam bazu nasledio... :(
[ bogdan.kecman @ 15.03.2012. 15:58 ] @
Citat:
mish_ns: Šta da radim ovakvu sam bazu nasledio... :(


ostavis rupe i bas te briga