এটি একটি খুব সাধারণ প্রশ্ন, সুতরাং এই উত্তরটি আমার লেখা নিবন্ধের উপর ভিত্তি করে ।
টেবিল সম্পর্ক
আমাদের নিম্নোক্ত post
এবং post_comment
সারণীগুলি বিবেচনা করে:
post
নিম্নলিখিত রেকর্ড রয়েছে:
| id | title |
|----|-----------|
| 1 | Java |
| 2 | Hibernate |
| 3 | JPA |
এবং এর post_comment
নিম্নলিখিত তিনটি সারি রয়েছে:
| id | review | post_id |
|----|-----------|---------|
| 1 | Good | 1 |
| 2 | Excellent | 1 |
| 3 | Awesome | 2 |
এসকিউএল আন্তঃ যোগদান
এসকিউএল যোগদানের ধারাটি আপনাকে বিভিন্ন সারণির সাথে সম্পর্কিত সারিগুলি সংযুক্ত করতে দেয়। উদাহরণস্বরূপ, একটি ক্রস যোগ যোগদানকারী দুটি টেবিলের মধ্যে সারিগুলির সমস্ত সম্ভাব্য সংমিশ্রণযুক্ত কার্টেসিয়ান পণ্য তৈরি করবে।
ক্রস জোনে কিছু নির্দিষ্ট পরিস্থিতিতে কার্যকর হলেও বেশিরভাগ সময় আপনি নির্দিষ্ট শর্তের ভিত্তিতে সারণিতে যোগদান করতে চান। এবং, সেখানেই অন্তর্ভুক্ত হয়ে জয়েন হয়।
এসকিউএল অভ্যন্তরীণ যোগদান আমাদের বিধি দ্বারা নির্দিষ্ট করা শর্তের ভিত্তিতে দুটি টেবিলের সাথে যুক্ত হওয়ার কার্টেসিয়ান পণ্য ফিল্টার করতে দেয় allows
এসকিউএল ইনার যোগ দিন - "সর্বদা সত্য" শর্ত
যদি আপনি একটি "সর্বদা সত্য" শর্ত সরবরাহ করেন তবে অন্তর্ভুক্ত যোগদানকারী রেকর্ডগুলি ফিল্টার করবে না এবং ফলাফল সেটটিতে দুটি যোগদানের টেবিলের কার্টেসিয়ান পণ্য থাকবে।
উদাহরণস্বরূপ, আমরা যদি নিম্নলিখিত এসকিউএল ইনার জয়েন কোয়েরি কার্যকর করি:
SELECT
p.id AS "p.id",
pc.id AS "pc.id"
FROM post p
INNER JOIN post_comment pc ON 1 = 1
আমরা সমস্ত সংযুক্তি post
এবং post_comment
রেকর্ডগুলি পেয়ে যাব :
| p.id | pc.id |
|---------|------------|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
সুতরাং, যদি অন দফা শর্তটি "সর্বদা সত্য" হয়, তবে অন্তর্ভুক্ত হওয়া সহজভাবে একটি ক্রস যোগ কোয়ের সমতুল্য:
SELECT
p.id AS "p.id",
pc.id AS "pc.id"
FROM post p
CROSS JOIN post_comment
WHERE 1 = 1
ORDER BY p.id, pc.id
এসকিউএল ইনার যোগ দিন - "সর্বদা মিথ্যা" শর্তে
অন্যদিকে, যদি ওএন ক্লজ শর্তটি "সর্বদা মিথ্যা" থাকে, তবে যুক্ত হওয়া সমস্ত রেকর্ডগুলি ফিল্টার করা হতে চলেছে এবং ফলাফল সেটটি খালি হবে।
সুতরাং, আমরা যদি নিম্নলিখিত এসকিউএল ইনার জয়েন কোয়েরি কার্যকর করি:
SELECT
p.id AS "p.id",
pc.id AS "pc.id"
FROM post p
INNER JOIN post_comment pc ON 1 = 0
ORDER BY p.id, pc.id
আমরা কোনও ফল ফিরে পাব না:
| p.id | pc.id |
|---------|------------|
কারণ উপরের ক্যোয়ারীটি নীচের ক্রস যোগ কোয়ের সমান:
SELECT
p.id AS "p.id",
pc.id AS "pc.id"
FROM post p
CROSS JOIN post_comment
WHERE 1 = 0
ORDER BY p.id, pc.id
এসকিউএল ইনার যোগ দিন - বিদেশী কী এবং প্রাথমিক কী কলামগুলি ব্যবহার করে ক্লোজ করুন use
নিম্নলিখিত শুল্কের মধ্যে সর্বাধিক সাধারণ শর্তটি হ'ল সন্তানের টেবিলে বিদেশী কী কলামটি পিতামাতার সারণীতে প্রাথমিক কী কলামের সাথে মেলে যা নিম্নলিখিত কোয়েরির দ্বারা চিত্রিত হয়েছে:
SELECT
p.id AS "p.id",
pc.post_id AS "pc.post_id",
pc.id AS "pc.id",
p.title AS "p.title",
pc.review AS "pc.review"
FROM post p
INNER JOIN post_comment pc ON pc.post_id = p.id
ORDER BY p.id, pc.id
উপরের এসকিউএল ইনার জয়েন কোয়েরি কার্যকর করার সময়, আমরা নিম্নলিখিত ফলাফল সেট পাই:
| p.id | pc.post_id | pc.id | p.title | pc.review |
|---------|------------|------------|------------|-----------|
| 1 | 1 | 1 | Java | Good |
| 1 | 1 | 2 | Java | Excellent |
| 2 | 2 | 3 | Hibernate | Awesome |
সুতরাং, ওএন ক্লজ শর্তের সাথে মেলে এমন রেকর্ডগুলিই ক্যোরি রেজাল্ট সেটে অন্তর্ভুক্ত রয়েছে। আমাদের ক্ষেত্রে, ফলাফল সেটটিতে post
তাদের post_comment
রেকর্ড সহ সমস্ত কিছু থাকে । যে post
সারিগুলির কোনও সম্পর্কিত নেই post_comment
তারা বাদ দেওয়া হয়েছে কারণ তারা অন ক্লোজ শর্তটি পূরণ করতে পারে না।
আবার, উপরের এসকিউএল ইনার জয়েন কোয়েরিটি নিম্নলিখিত ক্রস যোগ কোয়েরির সমতুল্য:
SELECT
p.id AS "p.id",
pc.post_id AS "pc.post_id",
pc.id AS "pc.id",
p.title AS "p.title",
pc.review AS "pc.review"
FROM post p, post_comment pc
WHERE pc.post_id = p.id
অবিঘ্নিত সারিগুলি হ'ল যেখানে বিধিটি পূরণ করে এবং কেবলমাত্র এই রেকর্ডগুলি ফলাফল সেটে অন্তর্ভুক্ত হতে চলেছে। অভ্যন্তরীণ যোগ দারা কীভাবে কাজ করে তা কল্পনা করার সর্বোত্তম উপায়।
| পি.আইডি | pc.post_id | pc.id | p.title | pc.review |
| ------ | ------------ | ------- | ----------- | --------- - |
| 1 | 1 | 1 | জাভা | ভাল |
| 1 | 1 | 2 | জাভা | দুর্দান্ত |
| 1 | 2 | 3 | জাভা | অসাধারণ |
| 2 | 1 | 1 | হাইবারনেট | ভাল |
| 2 | 1 | 2 | হাইবারনেট | দুর্দান্ত |
| 2 | 2 | 3 | হাইবারনেট | অসাধারণ |
| 3 | 1 | 1 | জেপিএ | ভাল |
| 3 | 1 | 2 | জেপিএ | দুর্দান্ত |
| 3 | 2 | 3 | জেপিএ | অসাধারণ |
উপসংহার
একটি অন্তর্ভুক্ত যোগদানের বিবৃতিটি INNER যোগদানের ক্যোয়ারীর অন ক্লজে আপনি যে একই শর্তে ব্যবহার করেছেন একই শর্তের সাথে একটি পরিচ্ছন্ন যোগ হিসাবে একটি ক্রস যোগ হিসাবে পুনরায় লেখা যেতে পারে।
এটি কেবল অন্তর্ভুক্ত যোগদানের জন্যই প্রযোজ্য নয়, বাহ্যিক যোগদানের জন্য নয়।