Saturday, April 23, 2016

SQL Joins



SQL Joins තේරෙන සිංහලෙන්. 

අපි මෙහිදී කරන්නේ Database tables දෙකක හෝ කිහිපයක Data rows combine (සම්බන්ධ ) කරන එකයි. ඒ කියන්නේ අපි Database tables දෙකක නැත්නම් කිහිපයක තියෙන Data මොකක් හරි හේතුවක්(Unique ID) එකක් මත සම්බන්ධ කරලා යම් යම් නිගමන වලට හෝ ගණනය කිරීම් කරන්න පුලුවන්.
උදාහරණයක් කිව්වොත් Company එකක employee table එකයි salary table එකයි work table එකයි Join කරල එක් employee කෙනෙකුට අදාල මාසික වැටුප සෙවීම කියන්න පුලුවන්.

එහෙනම් අපි වැඩ පටන් ගමු... 
 
මුලින්ම කියන්න යන්නේ ගොඩක් අය වැඩිපුර භාවිතා කරන (Most common) Join වර්ගයක් ගැන..ඒ තමයි INNER JOIN එහෙම නැත්නම් SIMPLE JOIN. නමේ හැටියටම තමයි ඉතින්, මෙයා හරිම Simple. 
අපි දෙන ලද Condition එක True වෙන හැමData Row එකම Return කරන එක තමයි මේ Join එක කරන්නේ.
මෙන්න Syntax එක.. 
 
      SELECT <list>
      FROM table A
      INNER JOIN table B
      ON <condition>
  
  • මෙතන SELECT Keyword එක ලඟ <list> කියල තියෙන්නේ අපිට Select කර ගන්න ඕන Columns set එක. 
  • අන්තිමට <Condition> කියල තියෙන්නේ Join කරන condition එක. ඒ කියන්නේ අපි tables දෙක Join කරන්නේ මොන හේතුව නිසාද කියන එක. 
  • ඒ වගේම INNER JOIN Keyword එක වෙනුවට JOIN Keyword එක දුන්නත් වෙන්නේ මේ වැඩේම තමයි...
මේ තියෙන්නේ මම ඉදිරියට භාවිතා කරන Data set එක.

  Example එක බැලුවම වැඩිපුර තේරෙයි කථාව......!

 
මෙන්න මේ වගේ වැඩක් තමයි වෙන්නේ.

  
රූපයේ පාට වෙලා තියෙන කොටස තමයි Result එක විදියට අපිට ලැබෙන්නේ.එහෙමත් නැත්නම් A U B (A ජේදනය B).




මීළඟට මම කියන්න යන්නේ තවත් ඉතා පහසු Join එකක් ගැන. ඒ තමයි LEFT OUTER JOIN.
මේකෙදි වෙන්නේ, Left table ( table 1 ) එකේ හැම row එකක්ම හා right table ( table 2 ) එකේ Condition එකට ගැලපෙන rows පමණක් return වෙනවා.

මේ තියෙන්නේ syntax එක,

     SELECT <list>
     FROM table A
     LEFT OUTER JOIN table B
     ON <condition>
  • LEFT OUTER JOIN වෙනුවට LEFT JOIN කියල දුන්නත් code එක වැඩකරනවා.
  රූපයකින් පෙන්නුවොත් මෙන්න මේ වගේ වැඩක් තමයි වෙන්නේ..


 රූපයේ පාට වෙලා තියෙන කොටස තමයි Result එක විදියට අපිට ලැබෙන්නේ





දැන් අපි join වර්ග දෙකක් දන්නවා..එහෙනම් දැන් ඉගෙන ගත්තා වගේම join එකක් බලමු.

දැන් අපි ඉගෙන ගන්නේ, RIGHT OUTER JOIN

නම දැක්කම තේරෙනවා නේද මොකද වෙලා තියෙන්නේ කියලා..left වෙනුවට right ඇවිත්.
ඔව් ඇත්තටම වෙන්නෙත් ඒකම තමයි...
මේ join එකේදි right table එකේ හැම row එකක්ම හා ඊට අදාල left table එකේ rows returnවෙනවා.
Syntax එකෙත් වෙනස් වෙන්නේ keyword එක විතරයි.
    
      SELECT <list>
      FROM table A
      RIGHT OUTER JOIN table B
      ON <condition>

  මේ බලන්න example එක.


මෙන්න තියෙනවා සුපුරුදු රූප සටහන.













හරි..දැන අපි බලමු FULL OUTER JOIN එක ගැන.

මෙයා කරන්නේ left join එකෙයි right join එකෙයි දෙක්කේම එකතුව. ඒ කියන්නේ එකෙයි left table එකෙයි right tableහැම row එකක්ම returnකරනවා.

     SELECT <list>
     FROM table A
     FULL OUTER JOIN table B
     ON <condition>

Syntax එකෙත් ලොකු වෙනසක් නෑ නේද..සුපුරුදු පරිදි keyword එක විතරයි වෙනස් වෙන්නේ.
ඒ උනාට ප්‍රශ්නේ තමයි මේකMySQL වල වැඩ කරන්නේ නෑ. error එකක් එනවා නේද?


 
මේ link එකේ වැඩි විස්තර තියෙනවා. 


ඉතින් Full join එක කරන වැඩේ අපිට මෙන්න මේ විදියට කරන්න පුලුවන්. ඒකට SQL UNION කියන keyword එක යොදා ගන්නවා.

                                                     මම Full join එක මොකක්ද කියලා කියන කොට කිව්ව දේ තමයි මෙතනදි මම කලේ, ඒ තමයි Left join එකයි Right join එකයි එකතු කලා, එකතු කරන්න යොදා ගත්තේ UNION keywordඑක.
දැන් බරපතල වැඩ ටික ඉවරයි. දැන් කියල දෙන joins දෙකම වැඩිය අමාරු ඒව නෙමයි.

මුලින්ම බලමු මොකද්ද මේ Cross Join එක කියන්නේ කියලා. Cartesian JOIN කියලා කියන්නෙත් මේ Join එකටම තමයී.
 මෙයා left table වල හැම row එකකටම right table වල හැම row එකක්ම match කරනවා. Programming වලින් කිව්වොත් for loop එකක් ඇතුලෙ for loopඑකක් දැම්මා වගේ වැඩක්.(Nested for loops).

මෙන්න Syntax එක..
     SELECT <list>
    FROM table A
    CROSS JOIN table B

මෙයාට condition වලින් වැඩක් නෑ කියලා තේරෙනවා නේ. 
මෙන්න අපේ example එකේ result එක. Rows 70 ආව විදිය තේරෙනවා නේ.(10 * 7)




 
දැන් මම කියල දෙන්න යන්නේ තවත් Simple join එකක්. ඒ තමයි Self join.
මෙයා එකම table එක join කරනවා. ඕන වෙන්නේ මොකටද කියලා අහන්න එපා.මේවත් ඕන වෙනවා හොඳේ..
  
     SELECT <list>
    FROM table A t1
    INNER JOIN table A t2
    ON <condition>

මෙන්න අපේ සුපුරුදු example එක.



 Joins ගැන කියන්න තියෙන්නේ මේ ටික තමයි..මොනවහරි ප්‍රශ්ණ තියෙනවා නම් Comments කරන්න...
එහෙනම් තවත් post එකකින් හමු වෙමු..!!!

Friday, April 1, 2016

Download a youtube playlist using youtube-dl with Linux

Youtube video playlist සම්පූර්ණයෙන්ම download කරමු.(only for LINUX users)

 

ගොඩක් කාලෙකින් blog එකට අලුත් post එකක් ලියන්න හිතුනා. ඉගෙන ගන්න අයට වගේම කාට උනත් youtube  කියන්නේ මේ දවස් වල නැතිවම බැරි දෙයක්. දන්නේ නැති දෙයක් බලන්න, සින්දුවක් අහන්න, ඉගෙන ගන්න අයට නම් video tutorials බලන්න, සහ තවත් ගොඩක් දේවල් වලට youtube උදව් කර ගන්න පුලුවන්.

අද මම කියන්න යන්නේ මේ හැමොටම ගොඩක් වැදගත් දෙයක් ගැන.ඒ තමයි කොහොමද youtube playlist එකක්ම download කරන්නේ කියලා.


එහෙනම් අපි වැඩ පටන් ගනිමු..

මේ වැඩේට අනිවර්යයෙන් Ubuntu හෝ වෙන open source operating systemඑකක් ඕන.මේ සඳහා youtube-dl කියන command line tool එක තමයි භාවිතා කරන්නේ.

මුලින්ම බලමු කොහොමද youtube-dl install කරන්නේ කියලා
 ක්‍රමය 1: 
 $> sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
 $> sudo chmod a+rx /usr/local/bin/youtube-dl



ක්‍රමය 2: 
 $> sudo curl https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl

 $> sudo chmod a+rx /usr/local/bin/youtube-dl



ක්‍රමය 3: 
 $> sudo pip install youtube-dl

 $> sudo pip install --upgrade youtube-dl

               මේ ක්‍රමය සදහා python pip install කර තිබිය යුතුය. 


හරි දැන් terminal එක අරගෙන මේ command එක run කරන්න. 
$> youtube-dl --version 
 version එක විදියට 2016 දිනයක් ලැබෙනවා නම් වැඩේ හරි. එහෙම නැත්නම් මේ command එක run කරන්න.
$> sudo youtube-dl -U
දැන් නම් අලුත්ම update එක install වෙයි.
හරි දැන් ඕන කරන හැම දෙයක්ම හරි. එහෙනම් download කරන්න පටන් ගමු. 
 පියවර 1: 
youtube playlist එක open කරගන්න.
 
 
උදාහරණයක් විදියට මේ playlist එක downlaod කරන්න ඕන කියල හිතමු.
https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBsvRxJJOzG4r4k_zLKrnxl 
 පියවර 2: 
Terminal එක open කරන්න(ctrl+alt+t). දැන් මේ command එක run කරන්න. 
$> youtube-dl -citw <url> 
 මෙතන url කියන තැන ඔයාට download කරන්න ඕන playlist එකේ url එක copy කරල paste කරන්න.
 
උදාහරණ: $> youtube-dl -citw https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBsvRxJJOzG4r4k_zLKrnxl 


citw කියන options set එක අමතක කරන්න එපා.. 
තව එකක්...
youtube-dl වලින් video විතරක් නෙමේ mp3, jpeg වගේ ඕනම format එකක දේවල් download කරන්න පුලුවන්.. 
 උදාහරණ: $> youtube-dl--extract-audio --audio-format mp3 <video URL>

මෙතන <Video URL> කියන තැනට download කරන්න ඕන mp3 එකේ video link එක දෙන්න. 
try කරල ප්‍රශ්න අවොත් comment කරන්න.
වැඩිදුර තොරතුරු: http://rg3.github.io/youtube-dl/ 
එහෙනම් තවත් tutorial එකකින් හමුවෙමු...

SQL Joins

SQL Joins තේරෙන සිංහලෙන්.  අපි මෙහිදී කරන්නේ Database tables දෙකක හෝ කිහිපයක Data rows combine ( සම්බන්ධ ) කරන එකයි . ඒ කියන...