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 එක දුන්නත් වෙන්නේ මේ වැඩේම තමයි...
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
එකේ
වැඩි විස්තර තියෙනවා.
http://stackoverflow.com/questions/4531485/mysql-full-join-not-working-but-right-and-left-join-works
ඉතින්
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 එකකින් හමු වෙමු..!!!














