Szerző Téma: MySQL: Nemlétezõ sor kiválasztása? Lehetségs?  (Megtekintve 913 alkalommal)

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
MySQL: Nemlétezõ sor kiválasztása? Lehetségs?
« Dátum: 2012. március 03. - 12:45:05 »
0 Show voters
Üdv!
Az lenne a kérdésem, hogy ha nekem a táblámban vannak a mezõ ID-k 1-tõl 100-ig, akkor valahogy lehetséges-e az, hogy kiválasztani a 150.-et?
De úgy értem ezt, mint amikor \"LEFT JOIN\"-al csatlakoztatsz a másik táblából valamit, és ha az üres (nem létezik), akkor \"NULL\"-al fog visszatérni.
Csak nekem ez azzal a különbséggel kell, hogy én nem mezõt akarok kiválasztani, hanem egy teljes sort.
Google-ba már mindent megnéztem, de ott mindig a mezõs megoldásra jutottam, nekem pedig nem arra lenen szüxégem.
Ez azért kéne, mert 10 lekérdezést lefuttatni minden spawnolásnál kicsit durva, még a thread-os pluginnal is, nem még a simával..
Egyszerûbb lenne \".. WHERE id = 5 OR id = 6 OR id = 7...\" megoldást alkalmazni, remélem van rá megoldás.
Elõre is köszönöm a válaszokat.
Most a következõ kódot használom, de errõl inkább nem mondok semmit :D
Ezt szeretném csak egy lekérdezéssel helyettesíteni és azért kéne az is, hogy az üres sorokat is kimutatja, hogy azt \"tudjam kihagyni\".
 

CMD:myobjects(playerid, params[])
{
for(new i; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
{
format(query, sizeof(query), \"SELECT `objectname` FROM `holdingobjects` WHERE `id` = %d\", g_pSavedObject[playerid]);
mysql_function_query(1, query, true, !\"THREAD_MyObjects\", !\"d\", playerid);
}
return 1;
}
forward THREAD_MyObjects(playerid);
public THREAD_MyObjects(playerid)
{
new
iCount = GetPVarInt(playerid, \"MOCount\"),
rows,
fields;
cache_get_data(rows, fields);
if(rows)
{
cache_get_row(0, 0, i_str);
}
else
{
i_str = \"Üres\";
}
if(!iCount++)
{
format(tmp, sizeof(tmp), \"Slot {\" #XCOLOR_GREEN2 \"}%d{\" #XCOLOR_WHITE \"}: ( %s )\", iCount, i_str);
}
else
{
GetPVarString(playerid, \"MODialog\", tmp, sizeof(tmp));
format(tmp, sizeof(tmp), \"%s\\r\\nSlot {\" #XCOLOR_GREEN2 \"}%d{\" #XCOLOR_WHITE \"}: ( %s )\", tmp, iCount, i_str);
}
if(iCount == 10)
{
strcat(tmp, \"\\n{\" #XCOLOR_RED \"}Felfrissítés\");
ShowPlayerDialog(playerid, DIALOG_HOLIST +2, DIALOG_STYLE_LIST, !\"{\" #XCOLOR_GREEN \"}Felcsatolható objectek\", tmp, !\"Ok\", !\"Mégse\");
DeletePVar(playerid, \"MODialog\");
DeletePVar(playerid, \"MOCount\");
}
else
{
SetPVarInt(playerid, \"MOCount\", iCount);
SetPVarString(playerid, \"MODialog\", tmp);
}
return 1;
}

MySQL: Nemlétezõ sor kiválasztása? Lehetségs?
« Válasz #1 Dátum: 2012. március 03. - 16:57:39 »
0 Show voters
Limitálod hogy 100 sort lehet csak, így talán:
 

LIMIT 0,100

 
Ez persze a mysql query végére kell
És nem tudom hogy lehetséges-e.
Szerintem nem, amúgy is ha leellenõrzõd num_rowokkal és amikor 0-t ad vissza akk nem létezõ.Vagy baromságot beszélek?

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
MySQL: Nemlétezõ sor kiválasztása? Lehetségs?
« Válasz #2 Dátum: 2012. március 03. - 17:24:29 »
0 Show voters
Látom nem igen értetted meg.
Én azt akarom, hogy a nem létezõ sort is rakja ki.
Nade mindegy, szerintem ez így nem éppen megoldható, muszáj lesz a másik megoldásomhoz folyamodni.
Ha pl. ezt lefuttatom, akkor minden sor megfog jelenni, kivéve az, amelyiknek az ID-je 9999, mivel az a sor üres és azt kéne, hogy azt is megjelenítse, csak null értékkel.
\"SELECT * FROM `holdingobjects` WHERE `id` = 1 OR `id` = 2 OR `id` = 5 OR `id` = 7 OR `id` = 10 OR `id` = 6 OR `id` = 255 OR `id` = 125 OR `id` = 126 OR `id` = 9999\"

MySQL: Nemlétezõ sor kiválasztása? Lehetségs?
« Válasz #3 Dátum: 2012. március 03. - 19:05:38 »
+1 Show voters
Mi lenne ha kiválasztanád az id mezõt is hogy azzal az adattal is visszatérjen.
És a visszahívás után ellenõriznéd le hogy létezik-e a megadott id.
 
SELECT `id`,`objectname` FROM `holdingobjects` WHERE `id` = 1 OR `id` = 2 OR `id` = 5 OR `id` = 7 OR `id` = 10 OR `id` = 6 OR `id` = 255 OR `id` = 125 OR `id` = 126 OR `id` = 9999[/quote]
[pawn]   new
   iCount = GetPVarInt(playerid, \"MOCount\"),
   checkvalidid,
   fetch[12],
   i_str[32],
   rows,
   fields;
cache_get_data(rows, fields);
if(rows)
{
   for(new i; i < rows; i++)
   {
      if(i >= MAX_PLAYER_ATTACHED_OBJECTS) break;
      cache_get_row(i, 0, fetch); checkvalidid = strval(fetch);
      if(g_pSavedObject[playerid] != checkvalidid) continue;

      cache_get_row(i, 1, str);[/pawn]

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
MySQL: Nemlétezõ sor kiválasztása? Lehetségs?
« Válasz #4 Dátum: 2012. március 03. - 20:55:22 »
0 Show voters
Kösz a segítséget!
Ez alapján kicsi próbálgatással sikerült megoldanom, amit akartam.
Ment a plusz, és még egyszer kösz  :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal