Üdv!
Kutattam kicsit a mysql rejtelmei között és találtam egy igen hasznos lehetõséget.
Ha valamien oknál fogva nekünk két táblából kellene kinyernünk adatokat és nem egybõl, viszont nem akarjuk hogy két külön lekérdezés legyen, mert ugye akkor külön callback kell. Meg lehet oldani úgy is, hogy egy queryben legyen. igazából csak annyi, hogy a két külön lekérdezés query-jét egymás mögé tesszük, és közé rakjuk az UNION szót.
A visszatérésnél pedig az elsõ sor az elsõ lekérdezés a második sor a második lekrédezés
pl:
//a lekérdezés
mysql_function_query(1, query, true, \"THREAD_pelda\", \"SELECT `Adat1` FROM `Tabla1` WHERE `valami` = \'1\' UNION SELECT `Adat2` FROM `Tabla2` WHERE `valami` = \'2\'\");
//a visszatérés
forward THREAD_pelda();
public THREAD_pelda()
{
new string[128];
cache_get_row(0,0,string);
printf(\"Adat1: %s\",string);
cache_get_row(1,0,string);
printf(\"Adat2: %s\",string);
}
Ennek a dolognaka hátulütõje annyi, hogy a két táblának azonos adat struktúrával kell rendelkeznie.
Helyesbítek: Azonos cella számúnak kell lennie a két sornak (köszönet Anthonynak)
Miért kellene azonos struktúrával rendelkezni? Két teljesen különbözõ táblából is le lehet kérni az adatokat, egy dolognak kell megegyeznie, a táblánként lekért mezõk számának. Ha az egyik táblából 2 mezõt kérsz le, akkor a másikból is 2-t kell lekérned, különben errort kapsz. Erre létezik egy csalás, méghozzá az, ha 2x kéred le ugyanazt a mezõt. Pl.:
SELECT `Adat1`, `Adat2` FROM `Tabla1` WHERE `valami` = \'1\' UNION SELECT `Adat3`,`Adat3` FROM `Tabla2` WHERE `valami` = \'2\'
Ez a kód tökéletesen mûködik.
Egyébként tapasztalatom szerint 2 eltérõ táblából teljesen eltérõ sorra ritkán van szükség, ha pedig ugyanazt a \"sort\" akarjuk lekérni(pl. Kis_Mariskához tartozó sort mind a 2 táblából, de mi név alapján akarjuk azonosítani, viszont a 2. táblában csak id alapján van kötve a dolog az elsõ táblához), akkor meg kapcsolhatjuk a 2 táblát(JOIN), és sokkal egyszerûbb és szebb megoldás :)