GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: dipsnark - 2013. augusztus 28. - 22:49:26

Cím: SQL sorszám
Írta: dipsnark - 2013. augusztus 28. - 22:49:26
Sziasztok!
Dolgozok egy jármûrendszeren(mysql). Úgy oldottam meg, hogy mikor betölti az autókat, mysql-be lementi a létrehozott ID-t(hogy ne legyen eltolódás meg ilyesmi) egy idx nevû oszlopba.
Ez a lekérdezés egy for ciklusban hajtódik végre. Az lenne a kérdésem, hogy hogyan lenne lehetõségem lekérni az sor ID-jét? Az AutoIncrementes oszlopomból lehetséges, hogy a játékban törlök, ezért az alapján nem tudom megcsinálni.
 
UPDATE kocsik SET idx = kocsiid WHERE ???

 
tehát úgy lenne jó, hogyha a WHERE után a for ciklus változóját tudnám írni, valahogy így:
 
format(query, sizeof(query), \"UPDATE kocsik SET idx = kocsiid WHERE sorszam = %i\", idx);

 
Az idx a for ciklusom változója.
Köszönöm a válaszokat!
Cím: SQL sorszám
Írta: Rupert - 2013. augusztus 28. - 22:52:44
Én jármû rendszerben sosem törlök, csak elteleportálom az autót ki az óceánba, ezzel elkerülhetõek a hibák.
Cím: SQL sorszám
Írta: lackos888 - 2013. augusztus 28. - 22:58:52
Egyszerû megoldani pedig. Gondolkozzatok. Mikor létrehozod a kocsit lesz 1 idje mysql-ben és 1 tömbben eltárolod péld, hogy ... ig id-jû kocsinak mi az idje. Majd mikor elmented a kocsikat üríted a tömböt(ahol tárolod a kocsikhoz az sql idt) a mentések után, és mikor betöltés van akkor ... id-re betöltöd ... mysql idt és kész.
Amúgy mysql_insert_id() funkció való erre.
Cím: SQL sorszám
Írta: dipsnark - 2013. augusztus 28. - 23:12:17
A mysql_insert_id() sajnos nekem nem jó, mivel a lekérdezésem nem generál AI ID-t egyik oszlopban se(fent említettem, hogy miért hagyom azt ki).
Valami olyasmi kellene, hogy mikor elindul a for ciklus(elõtte) az ID-t(AI) be kell állítani 0-ra és minden lefutáskor egyel növelni(vagy a for ciklus változójára állítani). Csak ugye az megint UPDATE lekérdezés és ha nem adok meg egy kritériumot(WHERE) akkor az összeset állítja 0-ra.  :hmmm: :confused:
De a legjobb még mindig az lenne ha a WHERE után egy sorszámot tudnék megadni
Edit:
A sorszám lekérésére egy ilyet találtam:
 
@curRow := @curRow+1 AS row_count

 
A tesztek szerint pontosan erre lenne szükségem, de ilyen kódot életemben nem láttam, fõleg nem UPDATE lekérdezésben. Valaki elmondaná, hogyan is mûködik ez?
Edit2:
Oké, megoldottam, hogy 10 percenként kiürítem a táblát és újratöltöm a jelenlegi adatokkal.