Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL]Sprawdzenie wolnego ID, Mam np. 10 różnych ID w tabeli, i chcę pierwszy wolny z nich wyciągnąć
Weles
post 5.12.2012, 03:09:27
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
mmmmmmm
post 5.12.2012, 08:34:13
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  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

Ten post edytował mmmmmmm 5.12.2012, 08:39:21
Go to the top of the page
+Quote Post
Sephirus
post 5.12.2012, 08:34:21
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  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"

Ten post edytował Sephirus 5.12.2012, 08:36:22


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
b4rt3kk
post 5.12.2012, 11:24:40
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Sephirus
post 5.12.2012, 12:31:41
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Widzę, że kolega powyżej lubi spamować i wyrażać głośno swoje myśli tongue.gif //joke


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
wNogachSpisz
post 5.12.2012, 14:12:36
Post #6





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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!
Go to the top of the page
+Quote Post
Weles
post 5.12.2012, 14:29:40
Post #7





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował Weles 5.12.2012, 14:35:58
Go to the top of the page
+Quote Post
b4rt3kk
post 5.12.2012, 15:04:58
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
mmmmmmm
post 5.12.2012, 15:08:58
Post #9





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


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ł'
Go to the top of the page
+Quote Post
Weles
post 6.12.2012, 01:58:57
Post #10





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:11