SQL সার্ভারে (Transact-SQL) JOIN একাধিক টেবিল থেকে ডেটা পুনরুদ্ধার করতে ব্যবহৃত হয়, যখন একটি SQL কমান্ডে দুই বা ততোধিক টেবিল একসাথে সংযুক্ত থাকে। এখানে এসকিউএল সার্ভারে 4 প্রকারের যোগদান রয়েছে
- অভ্যন্তরীণ যোগদান - সাধারণ সংযোগ ফর্ম হিসাবেও পরিচিত
- বাম বাইরে যোগদান করুন - বা বামে যোগদান করুন
- ডান বাইরে যোগদান করুন - অথবা ডান যোগ দিন
- সম্পূর্ণ বাহ্যিক যোগদান - অথবা সম্পূর্ণ যোগদান করুন
এখন এসকিউএল সার্ভারে যোগ দিতে আরও ভালভাবে বোঝার জন্য সিনট্যাক্স, চিত্র এবং উদাহরণগুলি দেখি৷
অভ্যন্তরীণ যোগদান
সম্ভবত আপনি ইতিমধ্যে কিছু কমান্ডে INNER Join ব্যবহার করেছেন৷ এটি হল সবচেয়ে সাধারণ ধরনের সংযোগ, সংযোগের শর্ত পূরণ হলে টেবিল থেকে সমস্ত সারি ফিরিয়ে দেয়।
Inner Join syntax
SELECT cot
FROM bang1
INNER JOIN bang2
ON bang1.
cot = bang2.cot;
৷
অভ্যন্তরীণ যোগদানের সচিত্র চিত্র
ফেরত ফলাফল হল state1 এবং bang2 এর মধ্যে সাধারণ রেকর্ড।
অভ্যন্তরীণ যোগদানের উদাহরণ
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = d
onhang.nhacung_id;
উপরের উদাহরণে যে ফলাফলটি দেওয়া হয়েছে তা হল 'সরবরাহকারী' টেবিলে তথ্যের সারি এবং 'অর্ডার' টেবিলে যখন nhacung_id-এর মান 2টি টেবিলের সমান হয়।পি>
আসুন আরও ভালভাবে বোঝার জন্য নির্দিষ্ট ডেটা সহ একটি উদাহরণ দেখি৷
nhacung টেবিলে 2টি তথ্য ক্ষেত্র রয়েছে:nhacung_id এবং nhacung_ten।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIAডোনহ্যাং টেবিলটি 3টি ক্ষেত্র donhang_id, nhacung_id এবং donhang_ngay নিয়ে গঠিত।
donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13 500127 10004 2003/05/14যদি চলমান থাকে (নিচে JINER> SELECT কমান্ড ব্যবহার করে)
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_
id = donhang.nhacung_id;
এটি ফলাফলের সেটটি ফিরে এসেছে:
nhacung_id দশ IBM donhang_ngay 10000 2003/05/12 10001 Hewlett Packard 2003/05/13টেবিল থেকে মাইক্রোসফ্ট এবং NVIDIA পণ্যগুলি বাদ দেওয়া হয়েছে কারণ nhacung_id (10002 এবং 10003) শুধুমাত্র 1টি টেবিলে উপলব্ধ৷ Donhang টেবিল থেকে সারি 500127 (donhang_id) সরানো হয়েছে কারণ nhacung_id 10004 nhacung টেবিলে নেই।
Inner Join এর পুরানো সিনট্যাক্স
Inner Join নিচের মতো পুরানো সিনট্যাক্স দিয়ে আবার লেখা যেতে পারে (তবে INNER Join কীওয়ার্ড আছে এমন সিনট্যাক্স ব্যবহার করার পরামর্শ দেওয়া হচ্ছে)
SELECT musicung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM donhang, nhacung
WHERE nhacung.n
hacung_id = donhang.nhacung_id;
বাম বাইরে যোগদান করুন
কিছু ডেটাবেস বাম বাইরের যোগদানের পরিবর্তে বাম যোগদান ব্যবহার করে৷ এই ধরনের সংযোগ চালু অবস্থায় বাম প্যানেলের সারিগুলি ফেরত দেয় এবং শুধুমাত্র অবশিষ্ট টেবিলগুলি নেয় যা সেট শর্তগুলি পূরণ করে৷
সিনট্যাক্স বাম যোগদান
SELECT cot
FROM bang1
LEFT [OUTER] JOIN bang2
ON bang1.co
t = bang2.cot;
৷
নীল এলাকার ফলস্বরূপ বাম যোগদানের চিত্র তুলে ধরুন
প্রত্যাবর্তিত ফলাফলে state1 এবং স্টেট1 (ছবিতে নীল এলাকা) বরাদ্দ করা bang2 তে অবস্থিত রেকর্ড রয়েছে।
বাম যোগদানের উদাহরণ
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhac
ung_id = donhang.nhacung_id;
উপরের উদাহরণটি টেবিল থেকে সমস্ত সারি ফিরিয়ে দেবে এবং শুধুমাত্র সেই সারিগুলি যা ডনহ্যাং টেবিলের প্রয়োজনীয়তাগুলি পূরণ করে৷ যদি টেবিলের nhacung_id মানটি donhang টেবিলে বিদ্যমান না থাকে, তাহলে Donhang-এর সমস্ত ক্ষেত্র ফলাফল টেবিলে ফলাফল প্রদর্শন করবে।
নীচে একটি নির্দিষ্ট উদাহরণ দেওয়া হল৷ টেবিলটিতে nhacung_id এবং nhacung_ten রয়েছে।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang টেবিলে donhang_id, nhacung_id এবং donhang_ngay অন্তর্ভুক্ত রয়েছে।
donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13যদি নিচের SELECT কমান্ডটি চালান:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhacun
g_id = donhang.nhacung_id;
ফলাফল এই রকম হবে:
nhacung_id nhacung_ten 10000 IBM donhang_ngay 2003/05/12 10001 Hewlett Packard 2003/05/13 10002 Microsoft 10003 NVIDIAMicrosoft এবং NVIDIA সারি এখনও ফলাফল সেটে রয়েছে কারণ তারা বাম বাইরের যোগদান ব্যবহার করছে (বাম দিকে সমস্ত টেবিল পান) . ইতিমধ্যে, এই রেকর্ডগুলির donhang_ngay বৈধ হবে৷
৷ডান বাইরে যোগদান করুন
কিছু ডেটাবেস রাইট OUTER Join এর পরিবর্তে RIGHT Join ব্যবহার করে৷ এই ধরনের সংযোগ চালু অবস্থায় ডান টেবিলের সারিগুলি ফেরত দেয় এবং শুধুমাত্র অবশিষ্ট টেবিলগুলি নেয় যা সেট শর্ত পূরণ করে৷
সিনট্যাক্স ডান যোগ দিন
SELECT cot
FROM bang1
RIGHT [OUTER] JOIN bang2
ON bang1.cot =
bang2.cot;
৷
দৃষ্টান্ত সঠিক যোগদান
প্রত্যাবর্তিত ফলাফলে bang2 অন্তর্ভুক্ত রয়েছে এবং রেকর্ডগুলি স্টেট1-এ bang2 (ছবিতে নীল এলাকা) বরাদ্দ করা হয়েছে।
উদাহরণ ডান যোগদান
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nha
cung_id = donhang.nhacung_id;
প্রত্যাবর্তিত ফলাফল হল ডোনহাং টেবিলের সমস্ত সারি এবং শুধুমাত্র সারিগুলি যা nhacung টেবিলের প্রয়োজনীয়তাগুলি পূরণ করে৷
যদি donhang টেবিলে nhacung_id-এর মান টেবিলে বিদ্যমান না থাকে, তাহলে তালিকার সমস্ত ক্ষেত্র ফলাফল টেবিলে প্রদর্শিত হবে।
নীচে একটি নির্দিষ্ট উদাহরণ দেওয়া হল৷ টেবিলটিতে nhacung_id এবং nhacung_ten রয়েছে।
nhacung_id nhacung_ten 10000 Apple 10001 Googleডোনহাং টেবিলের মধ্যে রয়েছে donhang_id, nhacung_id এবং donhang_ngay।
donhang_id nhcung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10002 2003/08/14যদি নিচের SELECT কমান্ডটি চালান:
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nhacung_id
= donhang.nhacung_id;
ফলাফল এই রকম হবে:
donhang_id donhang_ngay nhacung_id 500125 2003/08/12 Apple 500126 2003/08/13 Google 500127 2003/08/14সারি 500127 (donhang_id) এখনও ফলাফলের সারণীতে রয়েছে কারণ ঠিক করা হয়েছে ব্যাবহৃত হচ্ছে. মনে রাখবেন যে রেকর্ডের জন্য nhacung_ten-এ মান রয়েছে।
সম্পূর্ণ বাইরের যোগদান
কিছু ডেটাবেস ফুল OUTER Join এর পরিবর্তে FULL Join ব্যবহার করে৷ এই সংযোগের ধরনটি বাম এবং ডান টেবিলের সমস্ত সারি এবং শর্ত পূরণ করে না এমন শর্তে সেট করা NULL মানগুলি প্রদান করে৷
সিনট্যাক্স সম্পূর্ণ যোগদান করুন
SELECT cot
FROM bang1
FULL [OUTER] JOIN bang2
ON bang1.c
ot = bang2.cot;
৷
সবুজ এলাকার ফলাফলের সাথে সম্পূর্ণ যোগদানের চিত্র তুলে ধরুন
ফেরত ফলাফলে bang1 এবং bang2 এর সমস্ত রেকর্ড অন্তর্ভুক্ত রয়েছে৷
উদাহরণ সম্পূর্ণ যোগদান
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
উপরের উদাহরণটি টেবিল এবং ডনহ্যাং থেকে সমস্ত সারি ফিরিয়ে দেবে, কিন্তু শর্ত পূরণ না হলে, মানটি ফলাফল টেবিলে সেট করা হবে৷
যদি মিউজিক প্যানেলে nhacung_id ডোনহাং টেবিলে না থাকে, বা donhang টেবিলের nhacung_id মান মিউজিক প্যানেলে না থাকে, তথ্য ক্ষেত্রগুলি প্রদর্শিত হবে৷
পি>নীচে সম্পূর্ণ বাইরের যোগদানের একটি নির্দিষ্ট উদাহরণ দেওয়া হল৷ টেবিলটিতে nhacung_id এবং nhacung_ten রয়েছে।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang টেবিলে donhang_id, nhacung_id এবং donhang_ngay অন্তর্ভুক্ত রয়েছে।
donhang_id nhacung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10004 2003/08/14যদি নিচের SELECT কমান্ডটি চালান:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
ফলাফল এই রকম হবে:
nhacung_id nhacung_ten 10,000 donhang_ngay IBM 2003/08/12 10001 Hewlett Packard 2003/08/13 10002 Microsoft 10003 NVIDIA 2003/08/14Microsoft এবং NVIDIA পণ্যগুলি এখনও ফলাফল সেটে ব্যবহার করছে কারণ তারা সম্পূর্ণ বাইরে যোগদান. তারপর এই রেকর্ডের donhang_ngay মান রয়েছে। nhacung_id-এর জন্য সারিটি হল 10004 যা ফলাফল সারণীতেও রয়েছে কিন্তু এই রেকর্ডগুলির nhacung_id এবং nhacung_ten-এ মান রয়েছে৷