[ drugtito @ 15.05.2007. 01:19 ] @
Pozdrav svima,
ne znam kako da formiram upit, pa mi treba pomoc.
Ovako:

Imam bazu

Id Naziv BrZaduzenja

1 aaa 1
2 bbb 2
3 ccc 3
4 ddd 4
5 eee 6
6 fff 7
7 das 8
8 ssa 10
9 sdf 11
10 asf 12

Interesujeme kako mogu da dobijem prvi slobodan broj
iz field-a "BrZaduzenja" tj, u ovom
slucaju bi slobodni bili brojevi: (5, 9, i 13)?

Hvala unapred.
pozdrav
[ chachka @ 15.05.2007. 07:11 ] @
Ako BrZaduzenja pripada skupu prirodnih brojeva, onda:
Code:

SELECT COALESCE(MIN(t.neiskoriscen_BrZaduzenja),
                (SELECT MAX(BrZaduzenja) + 1 FROM neka_tabela)
               ) AS najmanji_slobodan_BrZaduzenja
  FROM (SELECT COUNT(t2.BrZaduzenja) AS neiskoriscen_BrZaduzenja
          FROM neka_tabela AS t1
               INNER JOIN
               neka_tabela AS t2
                 ON t1.BrZaduzenja >= t2.BrZaduzenja
         GROUP BY t1.BrZaduzenja
        HAVING t1.BrZaduzenja <> COUNT(t2.BrZaduzenja)
       ) AS t

Gornji upit ne samo da vraca prvu rupu nego u slucaju da nema rupe vraca prvi sledeci broj. Ako je potrebno samo nalazenje rupe onda je dovoljno i:
Code:

SELECT MIN(t.neiskoriscen_BrZaduzenja) AS najmanji_neiskoriscen_BrZaduzenja
  FROM (SELECT COUNT(t2.BrZaduzenja) AS neiskoriscen_BrZaduzenja
          FROM neka_tabela AS t1
               INNER JOIN
               neka_tabela AS t2
                 ON t1.BrZaduzenja >= t2.BrZaduzenja
         GROUP BY t1.BrZaduzenja
        HAVING t1.BrZaduzenja <> COUNT(t2.BrZaduzenja)
       ) AS t


[Ovu poruku je menjao chachka dana 15.05.2007. u 10:17 GMT+1]
[ drugtito @ 15.05.2007. 08:58 ] @
Hvala puno
na brzom odgovoru
[ bloker @ 14.09.2008. 18:28 ] @
Ja se izvinjavam sto aktiviram ove "zastarele" teme.. ali jedino je ova tema za prvi slobodan broj..

ja ne kontam gore navedeni sql kod.. gore se povezuju neke 2 tabele i onda se trazi najmanji..
meni treba sql kod koji iz jedne tabele koja ima polja Sifra i Naziv nadje prvu slobodnu sifru.. tj. prvu "rupu"..
[ agvozden @ 15.09.2008. 08:34 ] @
ne povezuju se bilo koje dve tabele vec se povezuje ista tabela sa "kopijom" te tabele putem alijasa (znaci ne postoji fizicki kopija tabele, vec se radi na istoj tabeli)