সাধারণ JOIN ... ON ...
বাক্য গঠনটি সুপরিচিত। তবে ON
ধারাটি যেটির সাথে মিল রয়েছে তার থেকে পৃথকভাবে অবস্থান করাও সম্ভব JOIN
। এটি এমন কিছু যা অনুশীলনে খুব কমই দেখা যায়, টিউটোরিয়ালগুলিতে পাওয়া যায় নি এবং আমি এমন কোনও ওয়েব সংস্থানও খুঁজে পাইনি যা এমনকি এটি উল্লেখযোগ্য বলে উল্লেখ করেছে।
এর সাথে চারদিকে খেলতে এখানে একটি স্ক্রিপ্ট রয়েছে:
SELECT *
INTO #widgets1
FROM (VALUES (1), (2), (3)) x(WidgetID)
SELECT *
INTO #widgets2
FROM (VALUES (1, 'SomeValue1'), (2, 'SomeValue2'), (3, 'SomeValue3')) x(WidgetID, SomeValue)
SELECT *
INTO #widgetProperties
FROM (VALUES
(1, 'a'), (1, 'b'),
(2, 'a'), (2, 'b'))
x(WidgetID, PropertyName)
--q1
SELECT w1.WidgetID, w2.SomeValue, wp.PropertyName
FROM #widgets1 w1
LEFT JOIN #widgets2 w2 ON w2.WidgetID = w1.WidgetID
LEFT JOIN #widgetProperties wp ON w2.WidgetID = wp.WidgetID AND wp.PropertyName = 'b'
ORDER BY w1.WidgetID
--q2
SELECT w1.WidgetID, w2.SomeValue, wp.PropertyName
FROM #widgets1 w1
LEFT JOIN #widgets2 w2 --no ON clause here
JOIN #widgetProperties wp
ON w2.WidgetID = wp.WidgetID AND wp.PropertyName = 'b'
ON w2.WidgetID = w1.WidgetID
ORDER BY w1.WidgetID
--q3
SELECT w1.WidgetID, w2.SomeValue, wp.PropertyName
FROM #widgets1 w1
LEFT JOIN (
#widgets2 w2 --no SELECT or FROM here
JOIN #widgetProperties wp
ON w2.WidgetID = wp.WidgetID AND wp.PropertyName = 'b')
ON w2.WidgetID = w1.WidgetID
ORDER BY w1.WidgetID
কিউ 1 দেখতে সাধারণ দেখাচ্ছে। কিউ 2 এবং কিউ 3 এর এই ON
ধারাটির অস্বাভাবিক অবস্থান রয়েছে ।
এই স্ক্রিপ্টটি অগত্যা খুব বেশি অর্থবোধ করে না। অর্থবহ দৃশ্যের অবতারণা করা আমার পক্ষে কঠিন ছিল।
সুতরাং এই অস্বাভাবিক বাক্য বিন্যাসের অর্থ কী? এটি কীভাবে সংজ্ঞায়িত করা হয়? আমি লক্ষ্য করেছি যে দুটি পদের জন্য সমস্ত পদ এবং আদেশের ON
অনুমতি নেই। এটি পরিচালিত নিয়মগুলি কী কী?
এছাড়াও এই জাতীয় প্রশ্ন লিখতে কি কখনও ভাল ধারণা?