SELECT \'kocsi\'.\'szin\', \'modellista\'.\'ar\', \'modellista\'.\'nev\' FROM \'kocsi\' INNER JOIN \'modellista\' ON (\'kocsi\'.\'modellid\' = \'modellista\'.\'modellid\') WHERE \'kocsi\'.\'id\' = 2
format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP);
idmodellidszinxcoordycoordzcoord152211000100010002520210051005100534113101010101010[/quote]A modellista táblában pedig 4: idmodellidnevar1411Infernus2000002400Landstalker700003520Sultan1500004556Monster \"A\"1000000[/quote]Ezen a 2 táblán fogom most bemutatni a 3 fajta JOINt.A) INNER JOIN:Ezzel a táblakapcsolási típussal csak olyan sort kapunk eredményül, ahol mind a 2 táblában van adat. Ha valamelyik tábla egyik cellájában nincs adat, akkor azt a sort nem fogjuk megkapni. Nézzük meg mit kapunk, ha INNER JOIN-al kapcsoljuk a két táblát, és lekérünk minden adatot: SELECT * FROM `modellista` JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Szándékosan nem INNER JOIN-t írtam, hanem csak JOIN-t. Ha nem írjuk elé hogy INNER, akkor a legtöbb SQL rendszer tudni fogja hogy mi az INNER JOIN-ra gondoltunk, de azért sokkal szebb, és szabályosabb ha odaírjuk. Szóval tessék odaírni, ezt most csak érdekességképp mutattam.A következõ eredményt kapjuk: idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010103520Sultan15000025202100510051005[/quote]Nem meglepõ, hisz csak ennél a 2 modellidnél(411, 520) volt adat mind a kettõ táblában.B) LEFT JOIN:Ezzel a kapcsolási típussal a lekérdezésünk a bal oldali táblából minden adatot megjelenít, akkor is, ha nincs párja a jobb oldali táblában. Amennyiben nincs párja, a második tábla értékei mind NULL karakterek lesznek.Tehát lekérdezünk: SELECT * FROM `modellista` LEFT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Mind láthatjuk a kód ugyanúgy épül fel, az egyetlen különbség a LEFT szócska a JOIN elõtt. Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010102400Landstalker70000NULLNULLNULLNULLNULLNULL3520Sultan150000252021005100510054556Monster \"A\"1000000NULLNULLNULLNULLNULLNULL[/quote]Láthatjuk, hogy a \'kocsi\' tábla minden sora ki lett listázva, és mellé a \'modellista\' sorai. Ahol nem volt kapcsolódó sor, ott minden érték NULL lett, ezzel jelezte felénk a rendszer, hogy ott nem volt találat.C) RIGHT JOIN:Pontosan ugyanazt csinálja mint a LEFT JOIN, csak épp a jobb oldali táblával. Tehát a jobb oldali tábla minden sorát meg fogjuk kapni, ha a jobb oldali táblában nincs az adott sorhoz kapcsolódó sor, akkor ugyanúgy NULL karaktereket kapunk.Lekérdezésünk: SELECT * FROM `modellista` RIGHT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Lényegében teljesen ugyanaz, mint eddig volt, csak most RIGHT szócska van a JOIN elõtt.Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoordNULLNULLNULLNULL152211000100010003520Sultan150000252021005100510051411Infernus20000034113101010101010[/quote]Láthatjuk amit elõrevetítettem, a jobb oldali táblából minden adatot megkaptunk, ahol pedig nem volt a bal oldali táblában adat, ott csakugyan mint a LEFT JOIN példában, \'NULL\'-t kaptunk eredményül. Itt láthatjuk, hogy a sorok sorrendje alapértelmezetten a jobb oldali tábla alapértelmezett (rendezés nélküli) sorrendje lesz.Nos ennyi lenne. Remélem nem írtam el semmit. Nem vagyok túl jó magyarázásban, ezért mutattam a példákat. A jobb és bal oldalt úgy kell érteni, hogy a JOIN-hoz képest jobb oldalon lévõ tábla, és bal oldalon lévõ tábla. Ha esetleg lenne még kérdésed, akkor szívesen válaszolok Dupla hozzászólás automatikusan összefûzve. ( 2012. július 18. - 22:04:05 )Idézetet írta: hegdavid95 date=1342636767\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24620\" data-ipsquote-contentclass=\"forums_TopicMég annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1 Aposztróf helyett (\') azt a hülye másik karaktert használd, csak olyan nincs a billentyûzetemen, ezért írtam \'\'-et. Így jó lesz: format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
idmodellidnevar1411Infernus2000002400Landstalker700003520Sultan1500004556Monster \"A\"1000000[/quote]Ezen a 2 táblán fogom most bemutatni a 3 fajta JOINt.A) INNER JOIN:Ezzel a táblakapcsolási típussal csak olyan sort kapunk eredményül, ahol mind a 2 táblában van adat. Ha valamelyik tábla egyik cellájában nincs adat, akkor azt a sort nem fogjuk megkapni. Nézzük meg mit kapunk, ha INNER JOIN-al kapcsoljuk a két táblát, és lekérünk minden adatot: SELECT * FROM `modellista` JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Szándékosan nem INNER JOIN-t írtam, hanem csak JOIN-t. Ha nem írjuk elé hogy INNER, akkor a legtöbb SQL rendszer tudni fogja hogy mi az INNER JOIN-ra gondoltunk, de azért sokkal szebb, és szabályosabb ha odaírjuk. Szóval tessék odaírni, ezt most csak érdekességképp mutattam.A következõ eredményt kapjuk: idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010103520Sultan15000025202100510051005[/quote]Nem meglepõ, hisz csak ennél a 2 modellidnél(411, 520) volt adat mind a kettõ táblában.B) LEFT JOIN:Ezzel a kapcsolási típussal a lekérdezésünk a bal oldali táblából minden adatot megjelenít, akkor is, ha nincs párja a jobb oldali táblában. Amennyiben nincs párja, a második tábla értékei mind NULL karakterek lesznek.Tehát lekérdezünk: SELECT * FROM `modellista` LEFT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Mind láthatjuk a kód ugyanúgy épül fel, az egyetlen különbség a LEFT szócska a JOIN elõtt. Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010102400Landstalker70000NULLNULLNULLNULLNULLNULL3520Sultan150000252021005100510054556Monster \"A\"1000000NULLNULLNULLNULLNULLNULL[/quote]Láthatjuk, hogy a \'kocsi\' tábla minden sora ki lett listázva, és mellé a \'modellista\' sorai. Ahol nem volt kapcsolódó sor, ott minden érték NULL lett, ezzel jelezte felénk a rendszer, hogy ott nem volt találat.C) RIGHT JOIN:Pontosan ugyanazt csinálja mint a LEFT JOIN, csak épp a jobb oldali táblával. Tehát a jobb oldali tábla minden sorát meg fogjuk kapni, ha a jobb oldali táblában nincs az adott sorhoz kapcsolódó sor, akkor ugyanúgy NULL karaktereket kapunk.Lekérdezésünk: SELECT * FROM `modellista` RIGHT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Lényegében teljesen ugyanaz, mint eddig volt, csak most RIGHT szócska van a JOIN elõtt.Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoordNULLNULLNULLNULL152211000100010003520Sultan150000252021005100510051411Infernus20000034113101010101010[/quote]Láthatjuk amit elõrevetítettem, a jobb oldali táblából minden adatot megkaptunk, ahol pedig nem volt a bal oldali táblában adat, ott csakugyan mint a LEFT JOIN példában, \'NULL\'-t kaptunk eredményül. Itt láthatjuk, hogy a sorok sorrendje alapértelmezetten a jobb oldali tábla alapértelmezett (rendezés nélküli) sorrendje lesz.Nos ennyi lenne. Remélem nem írtam el semmit. Nem vagyok túl jó magyarázásban, ezért mutattam a példákat. A jobb és bal oldalt úgy kell érteni, hogy a JOIN-hoz képest jobb oldalon lévõ tábla, és bal oldalon lévõ tábla. Ha esetleg lenne még kérdésed, akkor szívesen válaszolok Dupla hozzászólás automatikusan összefûzve. ( 2012. július 18. - 22:04:05 )Idézetet írta: hegdavid95 date=1342636767\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24620\" data-ipsquote-contentclass=\"forums_TopicMég annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1 Aposztróf helyett (\') azt a hülye másik karaktert használd, csak olyan nincs a billentyûzetemen, ezért írtam \'\'-et. Így jó lesz: format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
SELECT * FROM `modellista` JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` )
idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010103520Sultan15000025202100510051005[/quote]Nem meglepõ, hisz csak ennél a 2 modellidnél(411, 520) volt adat mind a kettõ táblában.B) LEFT JOIN:Ezzel a kapcsolási típussal a lekérdezésünk a bal oldali táblából minden adatot megjelenít, akkor is, ha nincs párja a jobb oldali táblában. Amennyiben nincs párja, a második tábla értékei mind NULL karakterek lesznek.Tehát lekérdezünk: SELECT * FROM `modellista` LEFT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Mind láthatjuk a kód ugyanúgy épül fel, az egyetlen különbség a LEFT szócska a JOIN elõtt. Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010102400Landstalker70000NULLNULLNULLNULLNULLNULL3520Sultan150000252021005100510054556Monster \"A\"1000000NULLNULLNULLNULLNULLNULL[/quote]Láthatjuk, hogy a \'kocsi\' tábla minden sora ki lett listázva, és mellé a \'modellista\' sorai. Ahol nem volt kapcsolódó sor, ott minden érték NULL lett, ezzel jelezte felénk a rendszer, hogy ott nem volt találat.C) RIGHT JOIN:Pontosan ugyanazt csinálja mint a LEFT JOIN, csak épp a jobb oldali táblával. Tehát a jobb oldali tábla minden sorát meg fogjuk kapni, ha a jobb oldali táblában nincs az adott sorhoz kapcsolódó sor, akkor ugyanúgy NULL karaktereket kapunk.Lekérdezésünk: SELECT * FROM `modellista` RIGHT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Lényegében teljesen ugyanaz, mint eddig volt, csak most RIGHT szócska van a JOIN elõtt.Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoordNULLNULLNULLNULL152211000100010003520Sultan150000252021005100510051411Infernus20000034113101010101010[/quote]Láthatjuk amit elõrevetítettem, a jobb oldali táblából minden adatot megkaptunk, ahol pedig nem volt a bal oldali táblában adat, ott csakugyan mint a LEFT JOIN példában, \'NULL\'-t kaptunk eredményül. Itt láthatjuk, hogy a sorok sorrendje alapértelmezetten a jobb oldali tábla alapértelmezett (rendezés nélküli) sorrendje lesz.Nos ennyi lenne. Remélem nem írtam el semmit. Nem vagyok túl jó magyarázásban, ezért mutattam a példákat. A jobb és bal oldalt úgy kell érteni, hogy a JOIN-hoz képest jobb oldalon lévõ tábla, és bal oldalon lévõ tábla. Ha esetleg lenne még kérdésed, akkor szívesen válaszolok Dupla hozzászólás automatikusan összefûzve. ( 2012. július 18. - 22:04:05 )Idézetet írta: hegdavid95 date=1342636767\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24620\" data-ipsquote-contentclass=\"forums_TopicMég annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1 Aposztróf helyett (\') azt a hülye másik karaktert használd, csak olyan nincs a billentyûzetemen, ezért írtam \'\'-et. Így jó lesz: format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
SELECT * FROM `modellista` LEFT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` )
idmodellidnevaridmodellidszinxcoordycoordzcoord1411Infernus200000341131010101010102400Landstalker70000NULLNULLNULLNULLNULLNULL3520Sultan150000252021005100510054556Monster \"A\"1000000NULLNULLNULLNULLNULLNULL[/quote]Láthatjuk, hogy a \'kocsi\' tábla minden sora ki lett listázva, és mellé a \'modellista\' sorai. Ahol nem volt kapcsolódó sor, ott minden érték NULL lett, ezzel jelezte felénk a rendszer, hogy ott nem volt találat.C) RIGHT JOIN:Pontosan ugyanazt csinálja mint a LEFT JOIN, csak épp a jobb oldali táblával. Tehát a jobb oldali tábla minden sorát meg fogjuk kapni, ha a jobb oldali táblában nincs az adott sorhoz kapcsolódó sor, akkor ugyanúgy NULL karaktereket kapunk.Lekérdezésünk: SELECT * FROM `modellista` RIGHT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` ) Lényegében teljesen ugyanaz, mint eddig volt, csak most RIGHT szócska van a JOIN elõtt.Nézzük az eredményt: idmodellidnevaridmodellidszinxcoordycoordzcoordNULLNULLNULLNULL152211000100010003520Sultan150000252021005100510051411Infernus20000034113101010101010[/quote]Láthatjuk amit elõrevetítettem, a jobb oldali táblából minden adatot megkaptunk, ahol pedig nem volt a bal oldali táblában adat, ott csakugyan mint a LEFT JOIN példában, \'NULL\'-t kaptunk eredményül. Itt láthatjuk, hogy a sorok sorrendje alapértelmezetten a jobb oldali tábla alapértelmezett (rendezés nélküli) sorrendje lesz.Nos ennyi lenne. Remélem nem írtam el semmit. Nem vagyok túl jó magyarázásban, ezért mutattam a példákat. A jobb és bal oldalt úgy kell érteni, hogy a JOIN-hoz képest jobb oldalon lévõ tábla, és bal oldalon lévõ tábla. Ha esetleg lenne még kérdésed, akkor szívesen válaszolok Dupla hozzászólás automatikusan összefûzve. ( 2012. július 18. - 22:04:05 )Idézetet írta: hegdavid95 date=1342636767\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24620\" data-ipsquote-contentclass=\"forums_TopicMég annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1 Aposztróf helyett (\') azt a hülye másik karaktert használd, csak olyan nincs a billentyûzetemen, ezért írtam \'\'-et. Így jó lesz: format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
SELECT * FROM `modellista` RIGHT JOIN `kocsi` ON ( `kocsi`.`modellid` = `modellista`.`modellid` )
idmodellidnevaridmodellidszinxcoordycoordzcoordNULLNULLNULLNULL152211000100010003520Sultan150000252021005100510051411Infernus20000034113101010101010[/quote]Láthatjuk amit elõrevetítettem, a jobb oldali táblából minden adatot megkaptunk, ahol pedig nem volt a bal oldali táblában adat, ott csakugyan mint a LEFT JOIN példában, \'NULL\'-t kaptunk eredményül. Itt láthatjuk, hogy a sorok sorrendje alapértelmezetten a jobb oldali tábla alapértelmezett (rendezés nélküli) sorrendje lesz.Nos ennyi lenne. Remélem nem írtam el semmit. Nem vagyok túl jó magyarázásban, ezért mutattam a példákat. A jobb és bal oldalt úgy kell érteni, hogy a JOIN-hoz képest jobb oldalon lévõ tábla, és bal oldalon lévõ tábla. Ha esetleg lenne még kérdésed, akkor szívesen válaszolok Dupla hozzászólás automatikusan összefûzve. ( 2012. július 18. - 22:04:05 )Idézetet írta: hegdavid95 date=1342636767\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24620\" data-ipsquote-contentclass=\"forums_TopicMég annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1 Aposztróf helyett (\') azt a hülye másik karaktert használd, csak olyan nincs a billentyûzetemen, ezért írtam \'\'-et. Így jó lesz: format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
Még annyit kérhetnék, hogy leellenörizd, hogy ebben mi lehet a hiba? format(query, sizeof(query), \"SELECT * FROM \'Players\' INNER JOIN \'Players2\' ON (\'Players\'.\'Name\' = \'Players2\'.\'Name\') WHERE \'Players\'.\'Name\' LIKE \'%s\' AND \'Players\'.\'IP\' LIKE \'%s\'\", Name(playerid), IP); Errorid:1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'.\'RegID\' FROM \'Players\' INNER JOIN \'KihivasokRekordok\' ON (\'Players\'.\'Name\' = \'P\' at line 1
format(query, sizeof(query), \"SELECT * FROM `Players` INNER JOIN `Players2` ON (`Players`.`Name` = `Players2`.`Name`) WHERE `Players`.`Name` LIKE \'%s\' AND `Players`.`IP` LIKE \'%s\'\", Name(playerid), IP);
[11:38:14] errorid: 1054, error: Unknown column \'Players2.Name\' in \'on clause\'
[11:46:10] errorid: 1064, error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'LIKE \'194.38.112.237\' WHERE `RegID` = 1\' at line 1