• SQL declarative Насколько очевидно задним числом оказывается решается задача поиска дырки в последовательности. Надо только отбросить фигню stackoverflow, приглушить императивное мышление и немного подумать.
    SELECT
    n.*,
    INET_NTOA(v1.extip) AS extip,
    INET_NTOA(v1.extip+1) AS nextip
    FROM
    ip4net AS n
    JOIN view_vds AS v1
    ON (n.net >> (32 — n.cidr) = v1.extip >> (32 — n.cidr) )
    LEFT JOIN view_vds AS v2
    ON (v2.extip = v1.extip + 1)
    WHERE
    v2.extip IS NULL
    Собственно LEFT JOIN себя же со сдвигом на один

Replies (0)