![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 24.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam tabele "kompy" a w niej pola (id,host,ip). Tabela wypełniona jest adresami z puli 10.0.0.1 do 10.0.0.254. Do każdego IP przypisany jest host. W całej tabeli występują braki ip np. 10.0.0.1 10.0.0.2 10.0.0.4 10.0.0.5 brakuje 10.0.0.3. Jak przeszukać tabele i wylistowac brakujące ip? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
select ip from tabela where not in ( select ip from tabela order by ip );
@edit to nie zadziała, musiałbyś mieć w tej tabeli wszystkie adresy ip i na podstawie jakiegoś warunku je pobierać. Także rozwiązanie pozostaje pobrać wszystko co jest w tabeli a później w pętli w php sprawdzać których nie ma, albo w procedurze sprawdzać od razu których nie ma, nie znam procedury mysql, nie pomogę. Ten post edytował cojack 11.07.2010, 18:58:35 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
IP pewnie trzymasz w VARCHAR zamiast skonwertowane do INTa przez INET_ATON() ?
Wygodniej jest szukać luk w ciągu liczb naturalnych niż w stringu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 24.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak, dokładnie stringi.
Czy coś da radę z tym zrobic i jakos jednak wyszukać? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Da się. Możesz na przykład wygenerwoać sobie tabelę TEMPORARY z jedną kolumną ip gdzie będziesz miał 255 wartości od 10.0.0.1 do 10.0.0.255 a potem złączyć ją left joinem z Twoją tabelą.
Kod SELECT ip FROM temp_ip LEFT JOIN kompy USING (ip) WHERE kompy.ip IS NULL
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:26 |