Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pronalazak brojeva koji nedostaju

[es] :: MySQL :: Pronalazak brojeva koji nedostaju

[ Pregleda: 1735 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.dynamic.isp.telekom.rs.



+18 Profil

icon Pronalazak brojeva koji nedostaju14.03.2012. u 12:45 - pre 147 meseci
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
 
Odgovor na temu

Marko_R
Marko Ranđelović
Programer
Niš

Član broj: 3737
Poruke: 575



+4 Profil

icon Re: Pronalazak brojeva koji nedostaju14.03.2012. u 15:43 - pre 147 meseci
Cisto praktican savet, koristi max+1, jer ima dovoljno sifara, a mozes da stavis i 64-bitnu sifru.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Pronalazak brojeva koji nedostaju15.03.2012. u 00:14 - pre 147 meseci
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]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pronalazak brojeva koji nedostaju15.03.2012. u 01:18 - pre 147 meseci
necu nista da potvrdjujem osim da je ceo koncept ispocetka je pogresan
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.dynamic.isp.telekom.rs.



+18 Profil

icon Re: Pronalazak brojeva koji nedostaju15.03.2012. u 05:50 - pre 147 meseci
Hvala svima...

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


Šta da radim ovakvu sam bazu nasledio... :(
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pronalazak brojeva koji nedostaju15.03.2012. u 15:58 - pre 147 meseci
Citat:
mish_ns: Šta da radim ovakvu sam bazu nasledio... :(


ostavis rupe i bas te briga
 
Odgovor na temu

[es] :: MySQL :: Pronalazak brojeva koji nedostaju

[ Pregleda: 1735 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.