[Denkfehler?] MYSQL: Abfrage, welches Feld frei ist

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo liebe Mitscripter !
    Ich bin momentan dabei, mir MYSQL anzueignen und stoße jetzt an eine erste Grenze.


    Mein Vorhaben:
    Ich habe ein Dynamisches Haussystem.
    Man kann Häuser erstellen und löschen.
    Wenn man ein Haus erstellt, soll per Abfrage ( Die gleich erscheint) abgefragt werden, welche HausID frei ist.
    Das heißt, wenn ich zum Beispiel 70 Häuser habe, HausID 13 lösche, soll das nächste Haus auf der ID 13 landen.
    Diese freie ID 13 soll per Abfrage gefunden werden.


    Dies ist meine Abfrage:


    stock mysql_CheckFreeHouseID()
    {
    new Query[128],count, HausID = 0;
    while(count > 0)
    {
    format(Query, sizeof(Query), "SELECT * FROM `Häuser` WHERE `ID` = '%i'", HausID);
    mysql_query(Query);
    mysql_store_result();
    count = mysql_num_rows();
    mysql_free_result();
    HausID ++;
    }
    return HausID-1;
    }



    Jedoch gibt es bei mir jetzt immer -1 wieder und nicht die gewünschte 1 oder 2 usw.


    Wo ist mein Fehler?
    Kann mir jemand einen Gedankensprung geben?


    Liebe Grüße

  • Folgendes habe Ich dazu gefunden, was den Samp-Server garantiert entlastet:

    SQL
    SELECT MIN( Häuser.ID +1 ) AS nextID
    FROM Häuser
    LEFT JOIN Häuser tf1 ON Häuser.ID +1 = tf1.ID
    WHERE tf1.ID IS NULL


    Der gibt die niedrigste freie ID aus.
    Erklären kann Ich die Funktion leider nicht, schaue morgen mal!