Stefanie Bauer: per mysql-abfrage freier Zahlen-Bereich finden?

Hallo Leute!

ich hab eine kleine Tabelle, in der ich Daten und eben auch Zahlenreihen erfasse.
Durch Löschen oder ähnliches enstehen hin und wieder Lücken.
Gibts es eine Möglichkeit, diese Lücken zu finden?

Das Problem ist, dass das Feld eine Zeichenkette ist, da mit Zeichen beginnt.

Beispiel:

A.B.1
A.B.2
A.B.4
B.B.1
B.B.2
B.B.3

Ich möchte per Abfrage A.B.3 geliefert bekommen, wenn ich A.B. vorgebe und B.B.4 erhalten, wenn ich entsprechend B.B. vorgebe.
Ist dies möglich?

Liebe Grüße,

Eure Steffi

  1. Hi Steffi

    Durch Löschen oder ähnliches enstehen hin und wieder Lücken.
    Gibts es eine Möglichkeit, diese Lücken zu finden?

    Ich hatte neulich dasselbe Problem, welches ich durch das Setzten eines Flags (Weiterer Wert in Datensatz => Wenn gelöscht, dann True) gelöst habe.

    Peace

    Tom2

    --
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    ss:| zu:) ls:& fo:) de:] va:) ch:] sh:( n4:& rl:° br:> js:| ie:% fl:( mo:}
    1. Hi Tom2,

      zufrieden hat mich die Antwort ja nicht direkt gemacht :,(

      Hab das Ganze jetzt in einer Schleife gelöst, inder ich jedesmal überprüfe, ob vorhanden oder nicht.

      Läuft soweit, wenn auch ziemlich un-performant, gelle?

      Gruß,

      Steffi

  2. Hi,

    du könntest dir einfach alle Werte nacheinander anschauen und den ersten freien per Script ermitteln (ich benutze jetzt mal PHP):

    $num = 1;
    $res = mysql_query("SELECT id FROM tabelle WHERE id LIKE 'A.B.%'");
    while ($ds = mysql_fetch_array($res, MYSQL_ASSOC))
    {
      $str = substr($ds['id'],4);
      $val = intval($str);
      if ($val > $num) break;
      $num++;
    }
    mysql_free_result($res);

    In $num steht jetzt die erste Zahl, die bei "A.B." frei ist.
    Ist aber ein bisschen zeitaufwendig, wenn es viele Datensätze sind.

    1. noch ein winziger Fehler:

      $res = mysql_query("SELECT id FROM tabelle WHERE id LIKE 'A.B.%' ORDER BY id ASC");

      sonst gibt er sie falsch rum aus und das script ist nicht benutzbar :-)