Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van. 61
Beszélgetés / A terror éjszakája! Az Iszlám Állam mészárolt Párizsban« Dátum: 2015. november 16. - 18:15:04 »Idézetet írta: Zeki date=1447693682\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58441\" data-ipsquote-contentclass=\"forums_Topic joga az van, de ne tessék olyat írni amivel mást sérteszAWE: Irtani az összes mocskos arabot, tálibot, muszlimot, mindet amelyik allah-ban hisz. Egytől egyik, gyereket, nőt, férfit mindet.[/quote] 62
Beszélgetés / A terror éjszakája! Az Iszlám Állam mészárolt Párizsban« Dátum: 2015. november 16. - 18:04:31 »Idézetet írta: Zeki date=1447692853\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58441\" data-ipsquote-contentclass=\"forums_Topic Azzal a véleménnyel egyben magadat is leírtad. Hogy milyen szinten vagy. Remélem így már megérted, ha nem, akkor pedig járj még 2x ennyit iskolába.Szerintem mindenkinek megvan a joga hogy milyen véleménye legyen erröl. 63
Beszélgetés / A terror éjszakája! Az Iszlám Állam mészárolt Párizsban« Dátum: 2015. november 16. - 17:48:48 »Idézetet írta: AWE date=1447692043\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58441\" data-ipsquote-contentclass=\"forums_Topic Zeki a fejed szétlesz baszva! Tiszta szívből remélem, hogy a következő áldozatuk te leszel te mocskos iszlám féreg. A legjobb az lett volna ha még anyádat meg apádat megölik és akkor nem fial világra egy ekkora gyökér pöcst. Ilyen ember, hogy a faszban lehet itt? Takarítsátok már el innen jézus isten.Nem szabad/érdemes lesüllyedni a \"szintjére\"... Ő csak véleményt nyilvánított... (Nem vagyunk egyformák szerencsére, és ő nem tehet arról hogy így lett nevelve. Az hogy ez kinek a feladata/lett volna nincs jogunk eldönteni...) 64
Beszélgetés / A terror éjszakája! Az Iszlám Állam mészárolt Párizsban« Dátum: 2015. november 16. - 17:34:31 »Idézetet írta: Zeki date=1447688686\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58441\" data-ipsquote-contentclass=\"forums_Topic Ebben ki is merült az értelmi szinted, ennyire azért nem kéne beégned.Mert az értelmiség töled kezdödik ugyan már ) 65
Beszélgetés / A terror éjszakája! Az Iszlám Állam mészárolt Párizsban« Dátum: 2015. november 14. - 22:53:39 »
Akik ezt elkövetik azok nagyon, nagyon de betegek. Ez egy olyan szervezet akik toborozzák az ilyen \"beteg\" állatokat, mentálisan sérült emberek tömkelege.
66
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. november 10. - 17:04:46 »Idézetet írta: florone date=1446792683\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58298\" data-ipsquote-contentclass=\"forums_Topic Istenem annyira hálás vagyok,hogy ezt megcsináltad,ha tudnék adnék pluszt,de még nincsen 50 hsz-em,ellenben viszont nagyon szépen szeretném neked megköszönni íly módon ezt,mert most iszonyatosan sokat segítettél nekem mysql terén,végre egy olyan tut-amit fel is tudtam fogni 100%-osan. :thumbsup:Szívesen, nincs mit 67
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. november 03. - 17:51:41 »
Téma befejezésre került. Észrevételeiteket bátran jelezzétek, komentben!
68
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. november 01. - 09:38:07 »Idézetet írta: zιтяσиє date=1446366923\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58298\" data-ipsquote-contentclass=\"forums_Topic Szép, tartalmas leírás lett. Időbe telik majd elolvasni.Köszönöm, de még nincs kész. Még folytatni fogom! 69
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. november 01. - 08:52:39 »
Szia!
Köszönöm a jelzésedet, rajta vagyok. :thumbsup: Kis türelmet kérek E: Módosítottam, most már könnyebben olvasható a fekete designnal is! 70
Segítségkérés / MYSQL hiba.« Dátum: 2015. október 31. - 09:24:54 »Idézetet írta: Szabi9 date=1445962605\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58263\" data-ipsquote-contentclass=\"forums_Topic a-a tévesstock MysqlKapcsolodas(bool:muvelet) így a helyes: mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password); 71
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. október 30. - 17:21:20 »Adatbázis kezelés SQL nyelven Bevezető Az SQL (Structured Query Language - Strukturált Lekérdező Nyelv) relációs adatbázisok kezelésére alkalmas, szabványos lekérdező nyelv, amelynek fejlesztése az 1970-es években kezdődött az IBM keretein belül, igaz ekkor még SEQUEL-nek nevezték. (Structured English QUEry Language) Tehát az SQL nyelv adatbázisok kezelésére szolgál. Egy relációs adatbázisban az adattárolás alapjait a táblák jelentik. Egy adatbázis általában több táblából áll. A táblák a logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. A táblák sorait adatrekordoknak, oszlopait rekordmezőknek nevezzük. SQL-en belül vannak olyan műveletek melyek nem túl fontosak számunkra, amikkel táblákat tudunk létrehozni vagy törölni, mivel ezeket nem „kódokon” keresztül szoktuk csinálni, hanem a phpMyAdmin-ban vagy valamilyen hasonló grafikus felületű programban. A gyakran elvégzett műveletek túlnyomó részt az alábbi négy alapműveletre korlátozódnak: - SELECT: tábla sorainak beolvasása - INSERT: sorok beillesztése a táblába - UPDATE: tábla sorainak módosítása - DELETE: tábla sorainak törlése Pár nyelvtani szabály: A nyelvben az utasításokat mindig pontosvessző választja el egymástól. Az olvashatóság és az eligazgatóság érdekében a kulcsszavakat általában nagybetűvel szokás írni, bár az utasítások értelmezésénél nem tesz különbséget. (kulcsszavak = pl: a fent említett select, insert, update, delete) A táblák és oszlopok neveit a biztonság érdekében rakjuk tick-ek közé (pl. `username`)! Hogy miért? Mert ha esetleg véletlenül egy kulcsszavat használunk oszlop vagy tábla névnek, akkor a tick-ek nélkül hibás lesz a kód. (` = tick = ALT GR + 7) A karakterláncokat aposztrófok közé kell írni. Ha egy karakterláncban aposztróf szerepel, azt ( \\ ) escape karakterrel (ALT GR + Q) írhatjuk bele. Pl: \\’ A számokat természetesen nem muszáj aposztróf közé írni. Táblázatok kezelése Mint említettem egy adatbázisban több táblát is létrehozhatunk pl: felhasználók, adminok, lányok, fiúk, diákok, osztályok, állatok, növények stb… Vegyünk is alapul egy egyszerű példát! Mondjuk az alábbi tábla neve „versenyzok”
A SELECT utasítás A SELECT utasítással a táblázatból válogathatunk ki adatokat pl: SELECT nev FROM versenyzok; Eredményül egy ún. eredménytáblát kapunk. Lásd:
Használata: SELECT oszlop_nevek FROM tábla_neve; Miért írtam, hogy oszlop nevek? Mert nem csak egy oszlopot kérdezhetünk le egyszerre, hanem többet is, amit vesszővel kell elválasztani pl: SELECT nev, szuletesi_ev FROM versenyzok; Az eredmény:
SELECT * FROM versenyzok; Ezzel a lekérdezéssel az összes „rekord” (6) tartalmát megtudtuk. Az eredménytáblánk most azonos az „alap” tábláéval. Lekérdezés eredményének szűkítése(WHERE) A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan. Az eredménytáblába csak azok a sorok fognak bekerülni, amelyek teljesítik a feltételeket. Ha például azt akarjuk, hogy akik 1998 után születtek azok kerülhessenek be eme szent táblázatba, akkor a feltétel: `szuletesi_ev` > 1998. Ahhoz, hogy összetettebb feltételeket tudjunk írni, nemsokára megismerkedünk a fontosabb operátorokkal. Használata: SELECT oszlop_nevek FROM tábla_neve WHERE oszlopra vonatkozó feltétel; Jelen esetben a példánk: SELECT nev FROM versenyzok WHERE szuletesi_ev > 1998; Eredményül csak Kiss Virág és Bajuk Petra fog szerepelni Példa(2): SELECT nev FROM versenyzok WHERE szuletesi_ev = 1999; Eredményül, most szintén csak Kiss Virág és Bajuk Petra neve fog szerepelni. Példa(3): SELECT nev FROM versenyzok WHERE neme = ’nő’; Eredményül, most értelem szerűen csak azoknak a nevét fogja ki listázni akinek a neme nő. !!FIGYELEM!!! Ha szöveg alapján szeretnéd szűkíteni a keresésedet akkor használj aposztrófot! Mint a hármas példánál tettem. Műveleti jelek/Operátorok a WHERE feltételben A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan.
A WHERE feltételek összekapcsolása Emlékezzünk, hogy a WHERE kulcsszó után megadhattunk egy feltételt, amely alapján szűrtük az eredményhalmazt. Lásd: SELECT nev FROM versenyzok WHERE szuletesi_ev = 1994; Azonban e feltételeket össze is tudjuk kapcsolni különböző ún. logikai műveletekkel. Például AND (és), illetve OR (vagy). Az OR (vagy) és AND (és) műveletek Használatuk: OR SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték OR oszlop_neve műveleti_jel érték; AND SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték AND oszlop_neve műveleti_jel érték; Példa (OR művelet) SELECT * FROM versenyzok WHERE szuletesi_ev=1994 OR szuletesi_ev=1999; Eredményül most megkaptuk azoknak a versenyzoknek az adatait akik 1994ben vagy 1999ben születtek. Lásd:
SELECT * FROM versenyzok WHERE nev LIKE \'Kiss%\' AND szuletesi_ev >= 1990; Eredményül most megkaptuk azoknak a versenyzoknek az adatait, akiknek a vezetéknevük (fogalmazzunk most így) Kiss-sel kezdődik és a születési évük 1990 vagy nagyobb. Ugye e szerint a táblázatunk most így nézne ki a gyakorlatban:
Első kérdésem: Ha szerepelne a táblázatomban egy Kis Márk nevű versenyző, aki 1991ben született, akkor az szerepelhet-e az eredménytáblázatomban? NEM. Miért? Mivel a LIKE ’Kiss%’ kifejezés azt jelenti, hogy a Kiss kifejezés után bármi állhat, de csak azután! A mi esetünkben a Kis Márk nevű versenyző egy s-sel írja a nevét, ami után egy szóköz áll, már itt buktuk a feltétel teljesülését, hiába teljesül az a feltételünk hogy a születési éve 1990 vagy nagyobb. Második kérdésem: Ha szerepelne a táblázatomban egy Kissert József nevű versenyző, aki 1989ben született, akkor az szerepelhet-e az eredménytáblázatomban? NEM. Miért? Nézzük csak a lájkos feltételünk teljesült, mert azt adtuk meg, hogy a Kiss után bármi lehet. Értelem szerűen akkor most a második feltételünk nem teljesült. Miért? Mert akárhogy számolom a 1989 nem nagyobb, mint 1990… Harmadik kérdésem: Ha szerepelne a táblázatomban egy Kiss Ferenc nevű versenyző, aki 2005ben született, akkor az szerepelhet-e az eredménytáblázatomban? IGEN. Miért? A \"lájkolós\" és a második feltételünk is teljesült. Negyedik kérdésem: Ha a harmadik kérdésem teljesült akkor kinek vagy kiknek az adatait kaptuk meg? Kiss Virág és Kiss Ferenc Példa (AND művelet 2) SELECT * FROM versenyzok WHERE azonositoja <> 69069 AND szuletesi_ev > 1994; Eredményül most megkaptuk azoknak a versenyzőknek az adatait, akiknek az azonosítójuk nem egyenlő 69069-cel és születési évük nagyobb, mint 1994. Lásd:
BETWEEN ... AND művelet Ez ismerős már nem? „Műveleti jelek/Operátorok a WHERE feltételben” című résznél már találkozhattunk vele. A BETWEEN … AND műveletet akkor használjuk, ha egy intervallum alapján akarjuk szűkíteni a feltételt. Használata: SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve BETWEEN érték1 AND érték2; Példa (1) SELECT * FROM versenyzok WHERE szuletesi_ev BETWEEN 1996 AND 1999; Eredményünk:
Ez a művelet azonban nem csak számok esetén működik, akár kilistázhatjuk azon versenyzők nevét is, akik ábécésorrendben Bajuk Petra és Kiss Virág között helyezkednek el, a következő módon: SELECT * FROM diakok WHERE nev BETWEEN \'Bajuk Petra\' AND \'Kiss Virág\'; Eredményünk:
Bár nem hiszem, hogy ez a probléma bárkit is veszélyeztetne, ugyanis mi mind értelmes lények vagyunk, és előbb gondolkodunk, aztán cselekszünk. Vagyis előbb tesztelünk, és csak utána nyomjuk élesbe, ha minden jó. Az IN művelet Az IN műveletet akkor használjuk, ha az alapján szeretnénk szűkíteni a keresésünket, hogy a mező értéke egy adott felsoroláshalmazba tartozik-e. Használata SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve IN (érték1,érték2,érték3, ...) *Az érték lehet egy szöveg is illetve szám is. !Ne felejtsd el, hogy a szöveget aposztrófok közé kell rakni! Nem tudom, hogy észrevetted a hasonlóságot, de majdnem olyan mint az OR művelet, csak itt több értéket is megadhatunk. Példa SELECT * FROM versenyzok WHERE szuletesi_ev IN (1996,1999); Eredményül most megkaptuk azoknak a versenyzőknek az adatait akik 1996ban illetve 1999ben születtek. Lásd:
A NOT feltétel A NOT feltételt akkor használjuk, ha arra az eredménytáblára vagy halmazra van szükségünk, amelyt a feltétel tagadásával kapnánk. Használata SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve NOT művelet; Példa SELECT * FROM versenyzok WHERE szuletesi_ev NOT BETWEEN 1996 AND 2000; Eredményül most megkaptuk azoknak a versenyzőnek az adatait akiknek a születési évük nem tehető 1996 és 2000 közé. Lásd:
Először is, mint említettem a rendszer amivel dolgozunk MySQL alapú, ezért a BETWEEN ... AND művelete intervalluma zárt. (matematikai jele: [x;y] ) Ez azt jelenti, hogy az első érték és az utolsó érték is még beletartozik az intervallumunkba. Tehát azok a versenyzők adatai nem szerepelhetnek az eredménytáblázatba akik 1996, 1997, 1998, 1999, 2000-ben születtek. Az INSERT INTO utasítás Az INSERT INTO utasítást akkor használjuk, ha egy meglévő táblához szeretnénk adatokat hozzáadni. Használata INSERT INTO tábla_neve (oszlop_neve1,oszlop_neve2,oszlop_neve3, ...) VALUES (érték1, érték2, ...); Megjegyés: Ha mindenen mezőbe szeretnénk értékeket megadni, akkor nem szükséges felsorolni az összes oszlop nevét. INSERT INTO tábla_neve VALUES (érték1, érték2, érték3, érték4, ...); Példa (1) Elvileg van nekünk egy \'versenyzok\' nevű táblánk, és mondjuk még csatlakozni szeretne 2 ember. Adataik a következők: Név: Molnár Zoltán Neme: férfi Születési év: 1999 Azonosítója: 81721 Név: Tóth Edina Neme: nő Születési év: 1997 Azonosítója: 92853 Rendben most ezeket az adatokat szépen felvisszük az adatbázisunkba és a megfelelő táblázatunkba. INSERT INTO versenyzok (nev,neme,szuletesi_ev,azonositoja) VALUES (\'Molnár Zoltán\',\'férfi\',1999,81721); A következő versenyző adatait vagy az előzőt is feltölthetjük a következő példa alapján, mivel az összes mező értékét megadtuk. INSERT INTO versenyzok VALUES (\'Tóth Edina\',\'nő\',1997,92853); Példa (2) Mi van akkor, ha hiányzik egy adat? Nem kell pánikba esni, hiszen ettől még feltölthetjük az adatbázisba amit szeretnénk. Lásd: Név: Nagy Judit Neme: nő Azonosítója: 99921 Kódunk: INSERT INTO versenyzok (nev,neme,azonositoja) VALUES (\'Nagy Judit\',\'nő\',99921); Most a táblázatunk valalhogy így nézne ki:
Az UPDATE utasítás Az UPDATE utasítást akkor használjuk, ha szeretnénk módosítani a táblázatunk egyes rekordjainak a tartalmát. Használata UPDATE tábla_neve SET oszlop_neve1=új_érték1, oszlop_neve2=új_érték2, ... WHERE oszlop_neve=érték; Példa Ebben a példánkban most szeretnénk megadni Nagy Judit születési évét (amit nem sikerült megtudnunk az előzőekben) UPDATE versenyzok SET szuletesi_ev=1996 WHERE azonositoja=99921; Most a táblázatunk valalhogy így nézne ki:
Lásd: UPDATE tábla_neve SET oszlop_neve = NULL WHERE oszlop_neve=érték Amikre figyelni kell: - Figyeljünk arra, ha a feltételünknek több rekord is megfelel, akkor a módosítás mindegyikken végrehajtódik. - Figyeljünk arra, hogy mindig adjunk meg feltételt, mert ha nem akkor az egész oszlopnuk értékei megváltozhatnak. A DELETE utasítás A DELETE utasítást akkor használjuk, ha egy tábla tartalmát vagy rekordot/kat szeretnénk törölni. Használata DELETE FROM tábla_neve WHERE oszlop_nev = érték); Megjegyés: Ha a tábla teljes tartalmát szeretnénk törölni akkor elég csak a következőeket használni: DELETE FROM tábla_neve; Példa DELETE FROM versenyzok WHERE azonositoja = 23965); Eredményül, most törölve lett az a versenyző összes adata akinek az azonosítója 23965 volt. Az ALIAS használata Ha az eredménytáblában nem az eredeti (tábla/)oszlopneveket szeretnénk látni, akkor használhatunk helyettük úgynevezett aliasokat, vagyis állneveket is. Használata(oszlopnevek megváltoztatásához): SELECT oszlop_neve1 AS álnév1, oszlop_neve2 AS alnév2 FROM tábla_neve Példa A táblázatunk mondjuk legyen:
SELECT nev AS Name, szuletesi_ev AS Birthdate FROM tabla; Az eredményünk a következő:
Lásd: SELECT nev AS [Teljes neve], szuletesi_ev AS \'Szuletesi ev\' FROM tabla; Alias használata(táblanevek megváltoztatásához): SELECT oszlop_neve(i) FROM tábla_neve AS álnev; Példa Figyelem! - Az alábbi példa két táblázatot is összekapcsol (JOIN), melyről lentebb olvashatsz! Varsalok nevű táblázatunk:
Parancsunk: SELECT r.rendelesID, r.elado_neve, v.nev AS \'Vasarlo Neve\' FROM Vasarlok AS v, Rendelesek AS r WHERE v.nev=\"Horváth Imre\" AND v.azonosito=r.vevoID; Eredményünk:
Táblák összekapcsolása(JOIN) Az adatbáziskezelés egyik leggyakrabban használt műveletei között mindenképpen meg kell említeni az összekapcsolás műveletét is. E művelet fontosságának egyik legfőbb oka az, hogy az adatbázis tervezése során, az információkat (az átláthatóság szempontjából) több táblára is szét bontjuk. (lásd előző példa) Egy összetettebb lekérdezéshez szükséges információk több táblában szétszórva helyezkednek el, így a lekérdezés során össze kell gyűjteni ezen adatokat a különböző táblákból, ahol az összetartozás bizonyos mezők értékeinek kapcsolatán alapszik. Azt a folyamatot, amikor több táblából származó adatokból állítunk elő egy újabb eredménytáblázatot, összekapcsolásnak, egyesítésnek vagy join-nak nevezzük. Négy ismert fajtája/típusa van: - INNER JOIN: Azokat a sorokat kérdezi le ami mindkét táblában létezik. - LEFT JOIN: Visszatér a bal oldali tábla minden rekordjával és a hozzá tartozó jobb oldali tábla rekordjával ha létezik, különben NULL(üres). - RIGHT JOIN: A LEFT JOIN ellenkezője, a jobb oldali tábla minden sorát visszaadja és a hozzájuk tartozó bal oldali tábla sorát ha van. - FULL OUTER JOIN: Az előző két típus kombinálása, mindkét táblából visszaadja az összes sort. Tudnunk kell azt is hogy az összekapcsoláskor megadhatunk az ON paraméter után egy feltételt is, ami alapján összeválogatja a sorokat. Ha viszont nem adunk meg ilyen feltételt, akkor minden sort minden sorral össze fog párosítani, ez két kétsoros táblánál 4 sort, két háromsoros táblánál 9 sort, egy három és négy soros táblánál 12 sort ad vissza. Tehát a sorok száma a két tábla sorainak a számának a szorzatával egyezik meg. (ez az ún. Descartes szorzat) Gondoljunk bele, hogy egy 100 és egy 200 soros táblánál, 20000 sort kapunk vissza, míg ha használjuk a ON feltételét átlagban jóval kebesebb sorról beszélhetünk. (hamarosan kitérünk erre is) Tehát az SQL-ben két táblázat egyesítésének legegyszerűbb formája, amikor a két táblázat Descartes szorzatát képezzük. Két táblázat Descartes szorzatának előállításához a következő (egy nagyon bonyolult) SQL utasítást kell kiadni: SELECT * FROM tabla1, tabla2; Persze a most létrehozott ereménytáblázatot tetszőlegesen tovább lehet alakítani, mert nagyon ritka azaz eset mikor szükségünk is van mind két táblázat rekordjainak teljes Descartes szorzatára. SELECT tabla1.oszlop_neve, tabla2.oszlop_neve FROM tabla1, tabla2 WHERE feltétel; Példa Ebben a példában most szeretnénk egy listát készíteni arról, hogy egy iskolában melyik diák, melyik osztályba jár, és ki az osztályfőnöke. diakok nevű táblázatunk:
SELECT diakok.nev, diakok.osztaly, tanarok.nev FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok; Ez vajon jó lesz lekünk? :nono: Persze a kóddal nincs semmi baj de az átláthatóság miatt jobb lenne ha az eredményhalmazunkban, nem lenne két \"nev\" nevű oszlop. Szóval használjuk a már korábban megismert ALIAST-t: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok; Íme az eredményünk:
Van ennek egy másik módja is: mégpedig a JOIN. Megjegyzés: Ez a példa hasonló azzal a példával, ami az Aliasba is szerepelt. (rendelesek,vasarlok) INNER JOIN Az INNER JOIN használatával, a lekérdezés eredményébe nem kerülnek bele azon tabla1-beli elemek, amelyeknek nincs megfelelőjük a tabla2 nevű táblában. Használata nagyon egyszerű: SELECT oszlop_neve(i) FROM tabla1 INNER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Az INNER JOIN hasonlóan(ugyanúgy) működik, mint a JOIN. Ennek ellenére a rendezett, átláthatósághoz javaslom az INNER JOIN használatát.) Példa SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev as osztalyfonok FROM diakok INNER JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; BUMM! Az eredményünk ugyanaz lesz, mint az eggyel korábbi esetben. Az INNER JOIN használata annyival jobb a táblák WHERE záradékon keresztül történő (össze)kapcsolásánál, hogy így külön helyen szerepelnek a kapcsolatokat leíró feltételek és a lekérdezés eredményét szűkítő feltételek, és ezáltal a lekérdezés SQL kódja áttekinthetőbb lesz. LEFT JOIN
Ez annyiban különbözik az INNER JOIN-tól, hogy amikor összekapcsolunk két táblát és ha nincsen megfelelő érték az első helyen lévő táblába a második helyen lévő táblához, akkor kiegészíti azokat NILL értékekkel. Ez akkor kelhet, amikor minden sornak szerepelni kell az eredményben, még akkor is, ha nem tartozik hozzá érték. Használata: SELECT oszlop_neve(i) FROM tabla1 LEFT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 LEFT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Néhány adatbázisnál a LEFT JOIN helyett LEFT OUTER JOIN-t kell használni) Példa Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban nem szerepel egy ember. (Aki éppen a 5.C osztályfőnöke) Kódunk: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok LEFT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; Eredményünk:
RIGHT JOIN
A RIGHT JOIN pedig pont azt teszi lehetővé, hogy a második táblában lévő összes adatot jelenítsük meg, függetlenül attól, hogy az első táblában van-e hozzátartozó mező. (ergo: ellentétesen viselkedik mint a left) Használata: SELECT oszlop_neve(i) FROM tabla1 RIGHT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 RIGHT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Néhány adatbázisnál a RIGHT JOIN helyett RIGHT OUTER JOIN-t kell használni) Példa Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban van olyan tanár amelynek nincs osztálya. Kódunk: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok RIGHT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; Eredményünk:
Ajánlott link: https://sampforum.hu/index.php?topic=9285.0 Forrásaim: http://www.w3schools.com/ http://php.webprog.biz http://aries.ektf.hu http://sql.misi.eu http://www.beregszaszi-debr.sulinet.hu http://www.sqlcourse.com https://hu.wikipedia.org/wiki/SQL Gondolkodási módom: Kell az alap mielőtt nekikezdenénk a programjaink megírásának. Természetesen ezeket az információkat bárki elérheti más oldalakon, akinek jó barátja a kereső mező 72
Társalgó / Hosting szavazás« Dátum: 2015. október 29. - 17:53:29 »
Mind hármat volt szerencsém kipróbálni. Szerintem eddig a sunwell a legjobb. De semmi se lehet tökéletes, mert ha az lenne unalmas egy életünk lenne.
73
Fórum Archívum (Témák/Fórumok) / Savedpositions -> PAWN tömb konverter« Dátum: 2015. október 28. - 23:22:57 »
Csak egy szerény megjegyzés: Mi lenne ha máskor ilyen lenne pl előbb azt jóvá kéne hagynia egy hozzáértőnek aki láthatja a forrás kódot és utána a forrás kód feltüntetése nélkül is megjelenhetne.
74
Szkript kérések / Pont küldése más jétkosnak« Dátum: 2015. október 28. - 21:42:22 »
OFF: Tegyétek a kezeteket a monitorra és küld neki a pontokat
Szia!
Na így lehet, remélem tudtam segíteni! További jó fórumozást! _[G]M[K]_Sh1ft_, 75
Leírások/Útmutatók / [TUT] MySQL Register/Login rendszer« Dátum: 2015. október 28. - 20:11:17 »
Sziasztok! Ma készültem nektek egy kis bemutatóval, hogy hogyan lehet készíteni egy bejelentkező/regisztrációs rendszert, ami MySQL-en alapul. Ez menteni fogja a játékos pénzét, pontját, halálait, öléseit. Valamint a felhasználóknak lesz egy lejárati dátumuk is, mely után a rendszer törölni fogja őket. Nos hogy ezt megvalósítsuk erre 2 (vagy több) mód is létezik. Ezt időközben el fogom mondani. Előkészületek: Szükségünk lesz egy MySQL és egy sscanf pluginra. <a href=\"http://forum.sa-mp.com/showthread.php?t=122983\">MySQL Plugin</a> Direkt link windows felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/windows/plugin-R6-win32_vs9.rar\">KATT</a> Direkt link linux felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/debian5/mysql.so\">KATT</a> <a href=\"https://dl.dropboxusercontent.com/u/102595204/sscanf-2.8.2.zip\">sscanf Plugin</a> Valamint ugye szükséged lesz egy MySQL adatbázisra amit phpmyadmin segítségével webes felületen elérhetsz. Rendben most elvileg meg van mindenünk és hozzá is kezdhetünk! Első lépés: - Táblázat létrehozása az adatbázisunkban <a href=\"http://s23.postimg.org/btn76vly3/image.png\">Kép teljes méretben</a> Vagy választasz egy adatbázist > SQL menüpont > Kódot beilleszted > Indít
Most lett egy táblázatunk: <a href=\"http://s14.postimg.org/7z5rt9sup/image.png\">Kép teljes méretben</a> Második lépés: - A \"scriptelés\" !Ne felejtsük hozzáadni a script elejéhez: #include <a_mysql> és #include <sscanf2> Mielőtt hozzá kezdünk definiáljunk pár dolgot csak a rend kedvéért!
Most az OnGameModeInit() vagy az OnFilterScriptInit() alá írjuk be a következő sorokat:
Most elvileg sikeresen „csatlakoztunk” az adatbázisunkhoz. Tökéletes! Most csekkoljuk le, hogy ha egy felhasználó fellép, az szerepel-e az adatbázisunkban. Majd az eredmények megfelelően, hozzon elő egy dialógust mely megkéri, hogy regisztráljon vagy jelentkezzen be, ha regisztrálva van.
Remek ezzel is megvolnánk. Most készítsük el az űrlap(dialógus) feldolgozását:
Még mielőtt folytatnánk, hozzunk létre változókat a felhasználó számára. Írjuk a mód elejére:
Következő lépésben „értelmet” adunk a pName és a LoadStats parancsunknak/függvényünknek.
Ez most szép és jó, de hát ha változás történt a felhasználónkkal azt nem menti a kilépésekor :\'( -Most akkor mit is szeretnénk csinálni? -Szeretnénk menteni a pontját, pénzét, öléseit, halálait, no meg, meg kéne valahogy hosszabbítani a \"lejárati dátum\"-ot A kód:
Harmadik lépés: - Feladat ütemezés/Esemény hozzáadása Rendben most van egy scriptünk, ami adatokat kér és közöl az adatbázissal. Ha jól látom most minden tökéletes, kivéve a „lejárati dátumot”. Mivel hiába van, az ott nekünk, még nem csinál semmit Ezért most kattintsunk az adatbázisunk nevére > SQL menüpont és illesszük be a következő kódot:
Eredmény: <a href=\"http://s17.postimg.org/z5lbf5qen/image.png\">Kép teljes méretben</a> - Ez most mire volt jó? - Létrehoztunk egy eseményt mely ismétlődni fog minden hatodik órában. (Persze ezt át írhatod) - Mi is tulajdonképpen ez az esemény? - Ugye ez szépen lefut nekünk minden hatodik órában, majd szépen törli az olyan felhasználók adatait melyeknek a \"lejárati dátuma\" kisebb mint a mai. Példa: Mai dátum: 2015-09-19 Géza lejárati dátuma: 2015-09-18 Törlődni fog? IGEN Gizi lejárati dátuma: 2015-09-19 Törlődni fog? NEM Hát igen itt van a bibi, ha nincs jogosultságod ilyenre. Hogy mit tehetsz ez ügyben? A szolgáltató vagy a rendszer gazda felé fordulsz, hogy szeretnél létrehozni egy ilyen eseményt/időzítőt a rendszerben, ami lefut bizonyos időközönként. Ha ez nem lehetséges, ugye úgy kezdtem, hogy erre több mód is van. Nos a másik mód az lenne , hogy a scriptben egy időzítő segítségével vagy egy függvény segítségével lefutatjuk ezt a sort: DELETE FROM ` adatbazisneve `.`users` WHERE `users`.`ExpirationDate` < CURDATE(); >>> new Query[256]; Remélem nem felejtettem ki semmit, használjátok egészséggel! :thumbsup: Valamint a kérdéseiteket vagy ha bármiféle problémátok lenne bátran jelezzétek kommentben! Vélemény? Ez az első tutorialom, remélem nem szúrtam el nagyon és érthető voltam. Nem azt mondom hogy nézzétek el a hibáim(de remélem nincs ), mert akkor miért is raktam ezt ki?
További jó fórumozást és szép napot! _[G]M[K]_Sh1ft_ |