জন্য INNER
যোগ দিল, না, অর্ডার না ব্যাপার। আপনি যতক্ষণ নিজের নির্বাচন থেকে এই পরিবর্তনটি পরিবর্তন করবেন ততক্ষণ ক্যোয়ারী একই ফলাফলগুলি SELECT *
দেবে SELECT a.*, b.*, c.*
।
( LEFT
, RIGHT
বা FULL
) OUTER
যোগদানের জন্য, হ্যাঁ, অর্ডারটি গুরুত্বপূর্ণ - এবং ( আপডেট করা ) জিনিসগুলি আরও জটিল।
প্রথমত, বহিরাগত যোগদানগুলি পরিবর্তনীয় হয় না, তাই a LEFT JOIN b
একই রকম হয় নাb LEFT JOIN a
বহিরাগত যোগদানগুলিও সাহসী নয়, সুতরাং আপনার উদাহরণগুলিতে যা উভয় (যোগাযোগ এবং সহযোগিতা) বৈশিষ্ট্যগুলিকে জড়িত:
a LEFT JOIN b
ON b.ab_id = a.ab_id
LEFT JOIN c
ON c.ac_id = a.ac_id
সমান :
a LEFT JOIN c
ON c.ac_id = a.ac_id
LEFT JOIN b
ON b.ab_id = a.ab_id
কিন্তু:
a LEFT JOIN b
ON b.ab_id = a.ab_id
LEFT JOIN c
ON c.ac_id = a.ac_id
AND c.bc_id = b.bc_id
এর সমতুল্য নয় :
a LEFT JOIN c
ON c.ac_id = a.ac_id
LEFT JOIN b
ON b.ab_id = a.ab_id
AND b.bc_id = c.bc_id
আরেকটি (আশাবাদী সরল) সাহসিকতার উদাহরণ। এটি হিসাবে চিন্তা করুন (a LEFT JOIN b) LEFT JOIN c
:
a LEFT JOIN b
ON b.ab_id = a.ab_id -- AB condition
LEFT JOIN c
ON c.bc_id = b.bc_id -- BC condition
এই সমতূল্য থেকে a LEFT JOIN (b LEFT JOIN c)
:
a LEFT JOIN
b LEFT JOIN c
ON c.bc_id = b.bc_id -- BC condition
ON b.ab_id = a.ab_id -- AB condition
কেবলমাত্র আমাদের "চমৎকার" ON
শর্ত রয়েছে। উভয় ON b.ab_id = a.ab_id
এবং c.bc_id = b.bc_id
সমতা চেক এবং NULL
তুলনা জড়িত না ।
আপনার এমনকি অন্য অপারেটরগুলির সাথে আরও জটিল বা আরও জটিলগুলির সাথে শর্ত থাকতে পারে: ON a.x <= b.x
বা ON a.x = 7
বা ON a.x LIKE b.x
বা ON (a.x, a.y) = (b.x, b.y)
এবং দুটি ক্যোয়ারী সমান হবে।
তবে, এর মধ্যে জড়িতদের IS NULL
কোনওর মতো বা নাল সম্পর্কিত কোনও ক্রিয়াকলাপ COALESCE()
যেমন উদাহরণস্বরূপ শর্তটি থাকলে b.ab_id IS NULL
দুটি প্রশ্নের সমতুল্য হবে না।
<blahblah>
? আপনি কি A থেকে B এবং A থেকে C তে যোগ দিচ্ছেন, বা আপনি A থেকে B এবং B থেকে C তে যোগ দিচ্ছেন?