{"id":105,"date":"2011-10-02T11:11:31","date_gmt":"2011-10-02T11:11:31","guid":{"rendered":"http:\/\/sql.programisius.lt\/?page_id=105"},"modified":"2011-10-02T11:18:44","modified_gmt":"2011-10-02T11:18:44","slug":"9-vidinis-lenteliu-apjungimas","status":"publish","type":"page","link":"http:\/\/sql.programisius.lt\/?page_id=105","title":{"rendered":"9. Vidinis lenteli\u0173 apjungimas"},"content":{"rendered":"<p>Duomenys duomen\u0173 baz\u0117je yra padalintos atskirose lentel\u0117se. B\u016bt\u0173 gerai, jeigu b\u016bt\u0173 galima visus duomenis tur\u0117ti vienoje lentel\u0117je ir i\u0161 jos atsirinkti kas domina. Tokios galimyb\u0117s reikalauja reliacin\u0117s duomen\u0173 baz\u0117s principai. SQL kalba ir reliacin\u0117 duomen\u0173 baz\u0117s, pastar\u0105j\u0105 s\u0105lyg\u0105 i\u0161pildo su apjungimu (angl. JOIN). JOIN apjungia dvi skirtingas lenteles pagal pasirinktus kriterijus.<\/p>\n<p>Pats papras\u010diausias automatinis apjungimas yra lenteli\u0173 atskyrimas kableliais po FROM.<\/p>\n<blockquote><p>SELECT \u201estulpeli\u0173 s\u0105ra\u0161as\u201c FROM lentel\u0117nr1, lentel\u0117nr2 WHERE \u201es\u0105lygos\u201c;<\/p><\/blockquote>\n<p>Lentel\u0117s apjungiamos \u012f vien\u0105 didel\u0119 lentel\u0119, kur kiekvienai eilutei i\u0161 pirmos lentel\u0117s yra sudaromos naujos eilut\u0117s tiek, kiek j\u0173 yra antrojoje lentel\u0117je. Pavyzd\u017eiui:<\/p>\n<p>Lentel\u0117 A<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\"><strong>S1<\/strong><\/td>\n<td valign=\"top\"><strong>S2<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">1<\/td>\n<td valign=\"top\">I<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">2<\/td>\n<td valign=\"top\">II<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Lentel\u0117 B<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\"><strong>T1<\/strong><\/td>\n<td valign=\"top\"><strong>T2<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">1<\/td>\n<td valign=\"top\">a<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">2<\/td>\n<td valign=\"top\">b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Apjungtos lentel\u0117s kaip \u201eA,B\u201c:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\"><strong>S1<\/strong><\/td>\n<td valign=\"top\"><strong>S2<\/strong><\/td>\n<td valign=\"top\" width=\"29\"><strong>T1<\/strong><\/td>\n<td valign=\"top\" width=\"29\"><strong>T2<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">1<\/td>\n<td valign=\"top\">I<\/td>\n<td valign=\"top\" width=\"29\">1<\/td>\n<td valign=\"top\" width=\"29\">a<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">1<\/td>\n<td valign=\"top\">I<\/td>\n<td valign=\"top\" width=\"29\">2<\/td>\n<td valign=\"top\" width=\"29\">b<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">2<\/td>\n<td valign=\"top\">II<\/td>\n<td valign=\"top\" width=\"29\">1<\/td>\n<td valign=\"top\" width=\"29\">a<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">2<\/td>\n<td valign=\"top\">II<\/td>\n<td valign=\"top\" width=\"29\">2<\/td>\n<td valign=\"top\" width=\"29\">b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Jeigu vieno stulpelio duomenys nurodo objekto vard\u0105 pagal kur\u012f galima atpa\u017einti kitose lentel\u0117s, tai logi\u0161ka suformuoti nauj\u0105j\u0105 lentel\u0119 pagal \u0161\u012f kriterij\u0173.<\/p>\n<blockquote><p>SELECT S1, S2, T2 FROM A, B WHERE S1=T1;<\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\"><strong>S1<\/strong><\/td>\n<td valign=\"top\"><strong>S2<\/strong><\/td>\n<td valign=\"top\" width=\"29\"><strong>T2<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">1<\/td>\n<td valign=\"top\">I<\/td>\n<td valign=\"top\" width=\"29\">a<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">2<\/td>\n<td valign=\"top\">II<\/td>\n<td valign=\"top\" width=\"29\">b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Palengvinti pastarojo tipo apjungim\u0105 galima pasinaudoti vidiniu apjungimu INNER JOIN ON. \u00a0Taigi analogi\u0161kai pastaroji buvusi SQL u\u017eklausa atitiks \u0161ias:<\/p>\n<blockquote><p>SELECT S1, S2, T2 FROM A INNER JOIN B ON (S1 = T2);<\/p><\/blockquote>\n<p>INNER yra numatytoji reik\u0161m\u0117, tod\u0117l n\u0117ra b\u016btina. Taigi SQL u\u017eklausa gali b\u016bti tokia:<\/p>\n<blockquote><p>SELECT S1, S2, T2 FROM A JOIN B ON (S1 = T2);<\/p><\/blockquote>\n<p><strong>U\u017eduotys<\/strong><\/p>\n<p>1. Suformuokite lentel\u0119, kurioje b\u016bt\u0173 visi u\u017esakymai ir klient\u0173 duomenys, o tuo tarpu klientoid neb\u016b\u0173 rodomas.<br \/>\n2. Suformuokite lentel\u0119, kurioje b\u016bt\u0173 tik\u00a0 prek\u0117 ir miestas i\u0161 kurio u\u017esak\u0117 klientas.<br \/>\n3. Sugalvokite dar 3 SQL u\u017eklausas, kuriose b\u016bt\u0173 apjungtos abi lentel\u0117s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Duomenys duomen\u0173 baz\u0117je yra padalintos atskirose lentel\u0117se. B\u016bt\u0173 gerai, jeigu b\u016bt\u0173 galima visus duomenis tur\u0117ti vienoje lentel\u0117je ir i\u0161 jos atsirinkti kas domina. Tokios galimyb\u0117s reikalauja reliacin\u0117s duomen\u0173 baz\u0117s principai. SQL kalba ir reliacin\u0117 duomen\u0173 baz\u0117s, pastar\u0105j\u0105 s\u0105lyg\u0105 i\u0161pildo su apjungimu (angl. JOIN). JOIN apjungia dvi skirtingas lenteles pagal pasirinktus kriterijus. Pats papras\u010diausias automatinis apjungimas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":13,"menu_order":9,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-105","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/pages\/105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=105"}],"version-history":[{"count":4,"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/pages\/105\/revisions"}],"predecessor-version":[{"id":107,"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/pages\/105\/revisions\/107"}],"up":[{"embeddable":true,"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=\/wp\/v2\/pages\/13"}],"wp:attachment":[{"href":"http:\/\/sql.programisius.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}