پێشەکی بۆ JOIN

لە بنکەدراوەکاندا، زۆرجار داتا لە چەند خشتەی جیاوازدا پاشەکەوت دەکرێت. بۆ ئەوەی بتوانین داتاکان بەیەکەوە ببەستینەوە، پێویستمان بە فەرمانی JOIN دەبێت. ئەم فەرمانە ڕێگامان پێدەدات داتا لە دوو خشتە یان زیاتر بهێنینە دەرەوە بەپێی پەیوەندییەکی دیاریکراو.

تێبینی: بنەمای سەرەکی JOIN بەکارهێنانی کلیلەکانە (Primary Key و Foreign Key) بۆ پەیوەستکردنی ڕیزەکانی خشتەکان.

1. INNER JOIN

ئەم جۆرە باوترین جۆری JOINـە. تەنها ئەو ڕیزانە دەگەڕێنێتەوە کە لە هەردوو خشتەکەدا هاوتایان هەیە. ئەگەر هیچ پەیوەندییەک لە نێوان داتاکان نەبێت، ئەوا دەرەنجامەکە هیچ شتێک نیشان نادات.

SELECT users.name, orders.product 
FROM users 
INNER JOIN orders ON users.id = orders.user_id;

لە نموونەی سەرەوەدا، تەنها ئەو بەکارهێنەرانە نیشان دەدرێن کە فەرمانیان تۆمار کردووە. ئەگەر بەکارهێنەرێک هیچ فەرمانێکی نەبێت، لە ئەنجامەکەدا نابینرێت. هەڵەی باو لێرەدا ئەوەیە کە هەندێک جار ناوی ستوونەکان لە هەردوو خشتەکەدا وەک یەک دەبن، بۆیە پێویستە ناوی خشتەکەش لەگەڵیدا بنووسیت.

2. LEFT JOIN

ئەم فەرمانە هەموو داتاکانی خشتەی چەپ (خشتەی یەکەم) دەگەڕێنێتەوە، لەگەڵ ئەو داتایانەی خشتەی ڕاست کە لەگەڵی هاوتان. ئەگەر لە خشتەی ڕاستدا هیچ هاوتایەک نەبێت، ئەوا بە NULL نیشانی دەدات.

SELECT users.name, orders.product 
FROM users 
LEFT JOIN orders ON users.id = orders.user_id;

ئەمە زۆر بەسوودە کاتێک دەتەوێت لیستی هەموو بەکارهێنەرەکان ببینیت، تەنانەت ئەوانەش کە هیچ فەرمانێکیان نییە. هەڵەی باو بریتییە لە بیرچوونی ئەوەی کە ئەنجامەکە لەوانەیە NULL لەخۆبگرێت، بۆیە پێویستە لە کاتی پرۆگرامکردندا ئامادەبن بۆ مامەڵەکردن لەگەڵ بەها بەتاڵەکان.

3. RIGHT JOIN

پێچەوانەی LEFT JOINـە. هەموو داتاکانی خشتەی ڕاست (خشتەی دووەم) دەگەڕێنێتەوە لەگەڵ هاوتاکانی خشتەی چەپ. ئەگەر لە خشتەی چەپدا هیچ هاوتایەک نەبێت، بە NULL نیشان دەدرێت.

SELECT users.name, orders.product 
FROM users 
RIGHT JOIN orders ON users.id = orders.user_id;

ئەمە کەمتر بەکاردێت چونکە دەتوانرێت بە گۆڕینی شوێنی خشتەکان لەگەڵ LEFT JOIN هەمان ئەنجام بەدەست بهێنرێت.

ئاگاداری: هەمیشە دڵنیابە لەوەی کە ستوونەکانی بەکارهاتوو بۆ پەیوەندی (ON clause) خاوەنی هەمان جۆری داتان (Data Type)، ئەگینا ڕەنگە ئەنجامەکان چاوەڕواننەکراو بن.

ئەرکی پراکتیکی

هەوڵ بدە خشتەیەکی 'students' و 'courses' دروست بکەیت. پاشان بە بەکارهێنانی INNER JOIN، ئەو قوتابیانە دەستنیشان بکە کە ناویان لە کۆرسەکاندا تۆمار کردووە. پاشان تاقیکردنەوەیەک بکە بە LEFT JOIN بۆ ئەوەی بزانیت کام قوتابیە تا ئێستا هیچ کۆرسێکی هەڵنەبژاردووە.

ئەمانە ئەم فێرکارییەیان تەواوکردووە

1 فێرخواز تەواویان کردووە