Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Sprawdzenie wolnego ID
Forum PHP.pl > Forum > Przedszkole
Weles
Witam!

Mam pewien problem, gdyż muszę dostać pierwszy wolny ID z tabeli.

Tzn. mam np. w tabeli rekordy o takich id:

1
2
4
5
7

I chcę aby zapytanie znalazło mi pierwsze wolne ID w kolejności, czyli w tym przypadku '3' którego brakuje.

Jest możliwe takie zapytanie?
A jeśli tak to jak ono ma wyglądać?

Pozdrawiam!
mmmmmmm
  1. SELECT t1.id+1 FROM tabela t1 LEFT JOIN tabela t2 ON t1.id=t2.id-1 WHERE t2.id IS NULL LIMIT 1

// edit: Zmiana z t1.id-1 na t1.id+1
Sephirus
  1. SELECT t1.id + 1 AS FirstAvailableId
  2. FROM tabela t1
  3. LEFT JOIN tabela t2 ON t2.id = t1.id + 1
  4. WHERE t2.id IS NULL
  5. ORDER BY t1.id
  6. LIMIT 1


HTH wink.gif

EDIT: Chciałbym jedynie zauważyć, że nie można temu ufać zbytnio - z tego względu, że nie ma się nad tym kontroli. Ktoś może w tym czasie zapisać coś pod danym numerem i wtedy mamy "klops"
b4rt3kk
Widzę, że autor tematu, nie umie korzystać z google? Za to dwaj koledzy powyżej już tak. smile.gif

http://lmgtfy.com/?q=sql+first+free+id

http://stackoverflow.com/questions/1405393...ble-id-in-mysql
Sephirus
Widzę, że kolega powyżej lubi spamować i wyrażać głośno swoje myśli tongue.gif //joke
wNogachSpisz
Cytat(Sephirus @ 5.12.2012, 08:34:21 ) *
nie można temu ufać zbytnio - z tego względu, że nie ma się nad tym kontroli. Ktoś może w tym czasie zapisać coś pod danym numerem


Dlatego trzeba to robić w trybie transakcyjnym - KONIECZNIE!
Weles
Cytat(b4rt3kk @ 5.12.2012, 11:24:40 ) *
Widzę, że autor tematu, nie umie korzystać z google? Za to dwaj koledzy powyżej już tak. smile.gif

http://lmgtfy.com/?q=sql+first+free+id

http://stackoverflow.com/questions/1405393...ble-id-in-mysql


Nie wiem za kogo ty mnie masz?
Mam ci pokazać Screena z mojej historii ile się wczoraj tego naszukałem pod różnorakimi frazami?

A tak swoją drogą, jeśli myślisz że to forum znam od psa to gratulację, właśnie Google mnie odsyła tutaj raz na jakiś czas, co widać po moich problemach pisanych raz na kilka tygodni/miesięcy jak już naprawdę nie daję radę.

A skoro jesteś taki Google-spec to gratuluję, ale nie musisz się chwalić jaki to "Genius" jesteś Googlowski..

@EDIT: Aha, i nie jestem anglikiem i za dobry z angielskiego nie jestem też, więc sorry, po to piszę na polskim forum że oczekuję polskich odpowiedzi a nie jakieś "sql free" czy jak ty to nazwałeś smile.gif

@Co do pozostałych, dziękuję, zobaczę co i jak, lecz wybaczcie ale tymczasem idę spać bo zaliczyłem ciężką nockę w skryptowaniu i już nie mam siły nawet 'okiełznać' tych skryptów tongue.gif
b4rt3kk
Cytat(Weles @ 5.12.2012, 14:29:40 ) *
Nie wiem za kogo ty mnie masz?
Mam ci pokazać Screena z mojej historii ile się wczoraj tego naszukałem pod różnorakimi frazami?

A tak swoją drogą, jeśli myślisz że to forum znam od psa to gratulację, właśnie Google mnie odsyła tutaj raz na jakiś czas, co widać po moich problemach pisanych raz na kilka tygodni/miesięcy jak już naprawdę nie daję radę.

A skoro jesteś taki Google-spec to gratuluję, ale nie musisz się chwalić jaki to "Genius" jesteś Googlowski..

@EDIT: Aha, i nie jestem anglikiem i za dobry z angielskiego nie jestem też, więc sorry, po to piszę na polskim forum że oczekuję polskich odpowiedzi a nie jakieś "sql free" czy jak ty to nazwałeś smile.gif

@Co do pozostałych, dziękuję, zobaczę co i jak, lecz wybaczcie ale tymczasem idę spać bo zaliczyłem ciężką nockę w skryptowaniu i już nie mam siły nawet 'okiełznać' tych skryptów tongue.gif


Kolego, bez nerwów. smile.gif
mmmmmmm
Cytat(b4rt3kk @ 5.12.2012, 11:24:40 ) *
Widzę, że autor tematu, nie umie korzystać z google? Za to dwaj koledzy powyżej już tak. smile.gif

W sprawach SQL to google gdyby mógł to pytał by się mnie, a nie ja jego.
Gdybyś spojrzał w historię moich wypowiedzi tu to byś się o tym przekonał... Lub choćby w moje 'Pomógł'
Weles
Hmm.. przyznaję że myślałem że jest jakieś wbudowane w SQL zapytanie tego typu czy coś innego.

Ale skoro to tak działa, to rzeczywiście ktoś mógłby zapisać w tym czasie pod danym ID coś.
Jednak zostawię tak jak mam, czyli ciągle kolejne ID, bo nie ma co kombinować.

Ale dzięki za pomoc smile.gif
Pozdrawiam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.