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

upit za prvi slobodan broj

[es] :: MySQL :: upit za prvi slobodan broj

[ Pregleda: 353 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

drugtito
Milovan Djilasd

Član broj: 138118
Poruke: 25
*.dynamic.sbb.co.yu.



Profil

icon upit za prvi slobodan broj15.05.2007. u 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
15.05.2007. u 01:19 

chachka
Srđan Mijatov
Subotica

Član broj: 53780
Poruke: 493
213.244.228.*

Sajt: www.baze-podataka.net


Profil

icon Re: upit za prvi slobodan broj15.05.2007. u 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]
"The best code is no code at all." - Zidar
15.05.2007. u 07:11 

drugtito
Milovan Djilasd

Član broj: 138118
Poruke: 25
*.dynamic.sbb.co.yu.



Profil

icon Re: upit za prvi slobodan broj15.05.2007. u 08:58
Hvala puno
na brzom odgovoru
15.05.2007. u 08:58 

[es] :: MySQL :: upit za prvi slobodan broj

[ Pregleda: 353 | Odgovora: 2 ]

Postavi temu Odgovori

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