Left Join এবং Cross Join

Microsoft Technologies - লিংক (LinQ) LINQ এ জয়েন অপারেশন (Join Operations in LINQ) |
215
215

Left Join এবং Cross Join হল SQL এবং LINQ-এ ব্যবহৃত দুটি ভিন্ন ধরনের জয়েন অপারেশন। এগুলি ডেটাবেস থেকে ডেটা যুক্ত করার জন্য ব্যবহৃত হয়, তবে তাদের কাজের ধরন এবং ফলাফল ভিন্ন।


Left Join

Left Join হল একটি জয়েন টাইপ যেখানে প্রথম টেবিলের সব রেকর্ড (বাম পাশে থাকা টেবিল) এবং দ্বিতীয় টেবিলের সেগুলি রেকর্ড নেয়া হয় যা প্রথম টেবিলের সঙ্গে মেলে। যদি দ্বিতীয় টেবিলে কোনও মেলানো রেকর্ড না থাকে, তবে সেই ক্ষেত্রের জন্য NULL মান ব্যবহার করা হয়। এটি সাধারণত Left Outer Join নামে পরিচিত।

Left Join এর মাধ্যমে আপনি বাম টেবিলের সমস্ত ডেটা এবং মিলে যাওয়া ডান টেবিলের ডেটা পেতে পারেন।


Left Join এর সিনট্যাক্স (SQL):

SELECT table1.column1, table1.column2, table2.column1
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

এখানে, table1 এবং table2 হল দুটি টেবিল, এবং common_field হল সেই ফিল্ড যা উভয় টেবিলে মিলিয়ে রেকর্ডগুলো জয়েন করা হয়।


Left Join এর উদাহরণ

ধরা যাক, আমাদের দুটি টেবিল আছে: Customers এবং Orders। আমরা Customers টেবিলের সমস্ত ডেটা এবং তাদের Orders টেবিল থেকে অর্ডার সম্পর্কিত ডেটা বের করতে চাই।

Customers টেবিল:

CustomerIDCustomerName
1Alice
2Bob
3Charlie

Orders টেবিল:

OrderIDCustomerIDOrderAmount
1011500
1022700

SQL Query:

SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderAmount
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

ফলাফল:

CustomerIDCustomerNameOrderAmount
1Alice500
2Bob700
3CharlieNULL

এখানে, Charlie গ্রাহকের কোন অর্ডার নেই, তাই তার জন্য OrderAmount NULL হয়ে গেছে।


Cross Join

Cross Join হল একটি জয়েন টাইপ যা দুটি টেবিলের মধ্যে Cartesian Product তৈরি করে। অর্থাৎ, এটি প্রথম টেবিলের প্রতিটি রেকর্ডের সঙ্গে দ্বিতীয় টেবিলের প্রতিটি রেকর্ড যুক্ত করে। এই জয়েনের ফলে যে সংখ্যা তৈরি হয় তা হবে প্রথম টেবিলের রেকর্ডের সংখ্যা গুণ দ্বিতীয় টেবিলের রেকর্ডের সংখ্যা।

Cross Join এর মাধ্যমে আপনি কোন শর্ত ছাড়াই সমস্ত সম্ভাব্য রেকর্ডের সংমিশ্রণ দেখতে পাবেন।


Cross Join এর সিনট্যাক্স (SQL):

SELECT table1.column1, table2.column1
FROM table1
CROSS JOIN table2;

এখানে, table1 এবং table2 হল দুটি টেবিল। CROSS JOIN ব্যবহারের মাধ্যমে আমরা উভয় টেবিলের সব রেকর্ডের সংমিশ্রণ পেয়ে থাকি।


Cross Join এর উদাহরণ

ধরা যাক, আমাদের দুটি টেবিল আছে: Colors এবং Sizes। আমরা Colors এবং Sizes টেবিলের মধ্যে সব সম্ভাব্য সংমিশ্রণ দেখতে চাই।

Colors টেবিল:

Color
Red
Green
Blue

Sizes টেবিল:

Size
Small
Medium
Large

SQL Query:

SELECT Colors.Color, Sizes.Size
FROM Colors
CROSS JOIN Sizes;

ফলাফল:

ColorSize
RedSmall
RedMedium
RedLarge
GreenSmall
GreenMedium
GreenLarge
BlueSmall
BlueMedium
BlueLarge

এখানে, Colors এবং Sizes টেবিলের সমস্ত রেকর্ডের সংমিশ্রণ তৈরি হয়েছে।


Left Join এবং Cross Join এর মধ্যে পার্থক্য

  • Left Join-এ বাম টেবিলের সব রেকর্ড থাকবে এবং যেসব রেকর্ড ডান টেবিলের সাথে মেলে, তাদের সংযুক্ত করা হবে। যেসব রেকর্ড ডান টেবিলের সাথে মেলে না, তাদের জন্য NULL মান দেখা যাবে।
  • Cross Join-এ কোনো শর্ত নেই, এবং এটি দুটি টেবিলের Cartesian Product তৈরি করে, যার ফলে প্রথম টেবিলের প্রতিটি রেকর্ডের সাথে দ্বিতীয় টেবিলের প্রতিটি রেকর্ড মিলিত হয়।

LINQ-এ Left Join

LINQ-এ Left Join করার জন্য Group Join পদ্ধতি ব্যবহার করা হয়। এটি মূলত Left Outer Join এর সমতুল্য। এখানে একটি উদাহরণ দেওয়া হল:

var leftJoin = from customer in customers
               join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
               from order in customerOrders.DefaultIfEmpty()
               select new
               {
                   customer.CustomerID,
                   customer.CustomerName,
                   OrderAmount = order?.OrderAmount ?? 0
               };

foreach (var item in leftJoin)
{
    Console.WriteLine($"CustomerID: {item.CustomerID}, CustomerName: {item.CustomerName}, OrderAmount: {item.OrderAmount}");
}

এখানে, DefaultIfEmpty() ব্যবহার করা হয়েছে যাতে NULL মান দেয়া যায় যদি কোনো অর্ডার না থাকে।


LINQ-এ Cross Join

LINQ-এ Cross Join তৈরি করার জন্য SelectMany পদ্ধতি ব্যবহার করা হয়। এটি প্রথম টেবিলের সব রেকর্ডের সাথে দ্বিতীয় টেবিলের সব রেকর্ডের সংমিশ্রণ তৈরি করে।

var crossJoin = from color in colors
                from size in sizes
                select new { color, size };

foreach (var item in crossJoin)
{
    Console.WriteLine($"Color: {item.color}, Size: {item.size}");
}

এখানে, প্রথম টেবিল colors এবং দ্বিতীয় টেবিল sizes এর সব রেকর্ডের সংমিশ্রণ তৈরি হয়েছে।


সারাংশ

  • Left Join: বাম টেবিলের সমস্ত রেকর্ড এবং ডান টেবিলের মেলানো রেকর্ডগুলি ফেরত দেয়, যেখানে ডান টেবিলের মেলানো রেকর্ড না থাকলে NULL দেখানো হয়।
  • Cross Join: দুটি টেবিলের মধ্যে সব সম্ভাব্য সংমিশ্রণ তৈরি করে। এটি Cartesian Product তৈরি করে এবং কোনো শর্ত থাকে না।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion