Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wyszukiwanie pustych ID
Forum PHP.pl > Forum > Bazy danych
simicar
Witam.

Właściwie to nie wiedziałem jak temat nazwać (przyznaję), a chodzi mi o wyciągnięcie z bazy
za pomocą jednej linijki query MySQLa brakujących ID w ciągu

Przykładowa tablica:
Kod
ID  |  date  |
--------------
10  | 070901 |
11  | 070801 |
13  | 070630 |
14  | 070601 |
16  | 070524 |
17  | 070501 |


Jak ułożyć [ SELECT ID(...)LIMIT 0, 2 ], żeby otrzymać taki wynik:
Kod
ID  |
-----
12  |
15  |


Chodzi o wyciągnięcie brakujących cyfr (tu 12 i 15) tak, żeby w bazie można było ponownie
zużyć usunięte wcześniej IDki (kolumna ID nie posiada auto_increment, wiadomo).
osiris
jesli chcesz pobrac pierwsze wolne id to:
  1. SELECT (id+1) FROM tab WHERE (id+1) NOT IN (SELECT id FROM tab) LIMIT 1;

nie mam pomyslu jakim zapytaniem moznaby wyciagnac wszyskie brakujace id
simicar
W zasadzie dziwna rzecz. W phpmyadmin'ie działa to bez zarzutu, ale stosując kod html z php:

  1. $z="select (ID+1) from TAB where (ID+1) not in (select ID from TAB) limit 1";
  2. $w=mysql_query($z);
  3. $nr=@mysql_fetch_row($w);
  4. ?>
  5. <input type="text" name="href" value="<?php echo ($nr[0]); ?>" style="width: 50px;" class="white" />
  6. &nbsp;&nbsp;najniższy wolny propnowany dla postrony index wynosi: <b><?php echo ($nr[0]); ?></b>

Zmienna $nr[0] zwraca mi wartość o jedną większą od największego indexu ID,
czyli pomimo tego, że wcześniej jest kilka wolnych - pomija je, wskazując najwyższą.
Co najciekawsze w phpmyadmin'ie IDENTYCZNA komenda daje poprawny rezultat -
- czyli pierwszy wolny ID.

O co może tu chodzić?
osiris
sprobuj dodac ORDER BY id przed LIMIT
simicar
Bez skutku, próbowałem również z orderem w innych miejscach.
Zawsze w php zwraca najwyższy kolejny ID, ale nie pierwszy wolny w ciagu...
W phpmyadmin i na konsoli działa poprawnie...

Może inne zapytanie?
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.