এসকিউএল সার্ভারে ক্রস যোগ এবং ফুল আউটার জোনের মধ্যে পার্থক্য কী?
তারা কি একই, না? দয়া করে ব্যাখ্যা করুন. কেউ এই উভয় ব্যবহার করবে?
এসকিউএল সার্ভারে ক্রস যোগ এবং ফুল আউটার জোনের মধ্যে পার্থক্য কী?
তারা কি একই, না? দয়া করে ব্যাখ্যা করুন. কেউ এই উভয় ব্যবহার করবে?
উত্তর:
ক্রস জোড় দুটি সারণীর মধ্যে একটি কার্টেসিয়ান পণ্য তৈরি করে, সমস্ত সারিগুলির সমস্ত সম্ভাব্য সংমিশ্রণ ফিরিয়ে দেয়। এর কোনও on
ধারা নেই কারণ আপনি কেবল সমস্ত কিছুর সাথে যোগ দিচ্ছেন।
একটি full outer join
একটি তার সংমিশ্রণ left outer
এবং right outer
যোগদান করুন। এটি উভয় টেবিলের সমস্ত সারি ফিরিয়ে দেয় যা ক্যোয়ারির where
ধারাটির সাথে মেলে এবং এমন ক্ষেত্রে যেখানে on
শর্তটি এই সারিগুলির জন্য সন্তুষ্ট হতে পারে না এটি null
অপ্রজনিত ক্ষেত্রগুলির জন্য মান রাখে ।
এই উইকিপিডিয়া নিবন্ধে টেবিলগুলির একটি নমুনা সেট দেওয়া আউটপুট উদাহরণ সহ বিভিন্ন ধরণের যোগদানের ব্যাখ্যা করে।
outer join
দ্রুত বা cross join
?
একটি জিনিস যা সর্বদা কারও কাছে সুস্পষ্ট নাও হতে পারে তা হ'ল খালি টেবিলের সাথে ক্রস যুক্ত হওয়া (বা ফলাফল সেট) ফলাফল ফাঁকা সারণিতে (এম x এন; সুতরাং এম x 0 = 0)
একটি সম্পূর্ণ বহিরাগত যোগদানের এম এবং এন উভয় 0 না থাকলে সর্বদা সারি থাকে।
আমি অন্যান্য উত্তরে একটি গুরুত্বপূর্ণ দিক যুক্ত করতে চাই, যা আমাকে এই বিষয়টি সর্বোত্তম উপায়ে ব্যাখ্যা করেছিল:
যদি 2 টি যুক্ত টেবিলগুলিতে এম এবং এন সারি থাকে তবে ক্রস জোনে সর্বদা (এম x এন) সারি তৈরি হবে তবে সম্পূর্ণ বাহ্যিক জোড় MAX (M, N) থেকে (M + N) সারি তৈরি করবে (প্রকৃতপক্ষে কতগুলি সারি রয়েছে তার উপর নির্ভর করে) "অন" প্রিডিট) ম্যাচ করুন।
সম্পাদনা করুন:
লজিক্যাল ক্যোয়ারী প্রসেসিং দৃষ্টিকোণ থেকে, ক্রস জয়েন সর্বদা এম x এন সারি উত্পাদন করে। ফুল আউটার জয়েনের সাথে যা ঘটে তা হ'ল বাম এবং ডান উভয় টেবিলই "সংরক্ষণ করা" রয়েছে, যেন বাম এবং ডানদিক উভয়ই যুক্ত হয়ে গেছে। সুতরাং সারিগুলি, বাম এবং ডান উভয় সারণী থেকে ফলাফলের তালিকায় যুক্ত করা হয়েছে, প্রিনিকেটটিকে সন্তুষ্ট নয়।
cross join
টেবিলগুলি এক গুণ করে; full outer join
কতগুলি সারি মেলে তার উপর নির্ভর করে একটি এটিকে সবচেয়ে খারাপ অবস্থায় যুক্ত করে ..
ক্রস জয়েন: ক্রস দুটি বা ততোধিক টেবিল থেকে সারিগুলির প্রতিটি সংমিশ্রণ নিয়ে ফলাফল তৈরি করে। এর অর্থ যদি টেবিল এ এর 3 টি সারি থাকে এবং টেবিল বিতে 2 টি সারি থাকে তবে একটি ক্রস জোনে 6 টি সারি হবে। দুটি টেবিলের মধ্যে কোনও সম্পর্ক স্থাপন করা হয়নি - আপনি আক্ষরিকভাবে কেবল প্রতিটি সম্ভাব্য সংমিশ্রণটি উত্পাদন করেন।
সম্পূর্ণ বাহ্যিক যোগদান: সম্পূর্ণ আউট জয়েন "বাম" বা "ডান" নয় - এটি উভয়ই! এটিতে JOIN এ অংশ নেওয়া উভয় সারণী বা ফলাফল সেট থেকে সমস্ত সারি অন্তর্ভুক্ত রয়েছে। JOIN এর "বাম" পাশে সারিগুলির জন্য কোনও মিল নেই সারি যখন উপস্থিত থাকে, আপনি "ডানদিকে" ফলাফল সেট থেকে নাল মান দেখতে পাবেন। বিপরীতে, যখন JOIN এর "ডান" পাশের সারিগুলির জন্য কোনও মিল নেই সারিগুলি উপস্থিত থাকে, আপনি "বামে" ফলাফল সেট থেকে নাল মান দেখতে পাবেন।
এসকিউএল সার্ভারের CROSS JOIN and FULL OUTER JOIN
জন্য আলাদা।
CROSS JOIN
ফিল্টারের মানদণ্ড বা কোনও শর্ত নির্বিশেষে কেবল দুটি টেবিলের কার্টেসিয়ান পণ্য।
FULL OUTER JOIN
LEFT OUTER JOIN and RIGHT OUTER JOIN
দুটি টেবিলের অনন্য ফলাফল সেট দেয় । টেবিলের দুটি কলাম ম্যাপ করার জন্য এটি অন ক্লোজও প্রয়োজন।
সারণি 1 এ 10 টি সারি রয়েছে এবং সারণি 2 এ 20 টি সারি রয়েছে যা নির্দিষ্ট কলামগুলিতে 5 টি সারি মিলেছে।
তারপরে
CROSS JOIN
ফলাফল সেটে 10 * 20 = 200 টি সারি ফিরবে।
FULL OUTER JOIN
ফলাফল সেট 25 সারি ফিরে আসবে।
FULL OUTER JOIN
(বা অন্য কোনও জোইন) সর্বদা কম বা তার সমান ফলাফল নির্ধারণ করেCartesian Product number
।
FULL OUTER JOIN
সমান দ্বারা প্রত্যাবর্তিত সারিগুলির সংখ্যা (দ্বারা সারিগুলির সংখ্যাLEFT OUTER JOIN
) + (দ্বারা সারিগুলির সংখ্যাRIGHT OUTER JOIN
) - (সারি দ্বারা সারিগুলির সংখ্যাINNER JOIN
)।
তারা একই ধারণা, ফিরে আসা NULL মান বাদে।
নিচে দেখ:
declare @table1 table( col1 int, col2 int );
insert into @table1 select 1, 11 union all select 2, 22;
declare @table2 table ( col1 int, col2 int );
insert into @table2 select 10, 101 union all select 2, 202;
select
t1.*,
t2.*
from @table1 t1
full outer join @table2 t2 on t1.col1 = t2.col1
order by t1.col1, t2.col1;
/* full outer join
col1 col2 col1 col2
----------- ----------- ----------- -----------
NULL NULL 10 101
1 11 NULL NULL
2 22 2 202
*/
select
t1.*,
t2.*
from @table1 t1
cross join @table2 t2
order by t1.col1, t2.col1;
/* cross join
col1 col2 col1 col2
----------- ----------- ----------- -----------
1 11 2 202
1 11 10 101
2 22 2 202
2 22 10 101
*/
ক্রস যোগ দিন : http://www.dba-oracle.com/t_garmany_9_sql_cross_join.htm
TLDR; 2 টেবিলের মধ্যে সমস্ত সম্ভাব্য সংমিশ্রণ তৈরি করে (কার্থেসিয়ান পণ্য)
(পূর্ণ) বহিরাগত যোগদান : http://www.w3schools.com/Sql/sql_join_full.asp
TLDR; উভয় সারণীতে প্রতিটি সারি ফেরত দেয় এবং একই মান রয়েছে এমন ফলাফলও রয়েছে (CONDITION এর সাথে মেলে)
একটি সম্পূর্ণ বাহ্যিক জোড় একটি বাম বাহ্যিক জোড় এবং ডান বাহ্যিক জোড় একত্রিত করে। ফলাফল সেট উভয় সারণী থেকে শর্তগুলি পূরণ করে যেখানে সারিগুলি সরিয়ে দেয় তবে কোনও মিল নেই সেখানে নাল কলামগুলি দেয়।
ক্রস জয়েন একটি কার্টেসিয়ান পণ্য যা টেবিলগুলিতে যোগদানের জন্য কোনও শর্তের প্রয়োজন হয় না। ফলাফল সেটটিতে সারি এবং কলামগুলি রয়েছে যা উভয় টেবিলের একটি গুণ।
এখানে একটি উদাহরণ রয়েছে যেখানে সম্পূর্ণ আউটর জয়েন এবং ক্রস জয়েন দুজনেই নূলে ফিরে না পেয়ে একই ফলাফলের সেটটি প্রদান করে। সম্পূর্ণ আউট জয়েনের জন্য অন ক্লজে 1 = 1 নোট করুন:
declare @table1 table ( col1 int, col2 int )
declare @table2 table ( col1 int, col2 int )
insert into @table1 select 1, 11 union all select 2, 22
insert into @table2 select 10, 101 union all select 2, 202
select *
from @table1 t1 full outer join @table2 t2
on 1 = 1
(২ টি সারি প্রভাবিত) (২ টি সারি প্রভাবিত) কল 1 কল 2 কল 1 কল 2 ----------- ----------- ----------- ----------- 1 11 10 101 2 22 10 101 1 11 2 202 2 22 2 202
select *
from @table1 t1 cross join @table2 t2
কল 1 কল 2 কল 1 কল 2 ----------- ----------- ----------- ----------- 1 11 10 101 2 22 10 101 1 11 2 202 2 22 2 202 (4 টি সারি প্রভাবিত)
এসকিউএল সম্পূর্ণ আউট জয়েন
সম্পূর্ণ আউটার জয়েন ম্যাচ নির্বিশেষে বাম টেবিল (টেবিল 1) এবং ডান টেবিল (টেবিল 2) থেকে সমস্ত সারি প্রদান করে।
সম্পূর্ণ আউটর জয়েন কীওয়ার্ডটি বাম আউটর জয়েন এবং রাইট আউটর জয়েন উভয়ের ফলাফলকে একত্রিত করে
তথ্যসূত্র: http://datasciencemadesimple.com/sql-full-outer-join/
এসকিউএল ক্রস যোগ দিন
এসকিউএল ক্রসে যোগদান করুন প্রথম সারণির প্রতিটি সারি দ্বিতীয় সারণির প্রতিটি এবং প্রতিটি সারি দিয়ে ম্যাপ করা হয়।
ক্রস জয়েন অপারেশনের ফলাফল সেট দ্বারা উত্পাদিত সারিগুলির সংখ্যা দ্বিতীয় সারণীতে সারি সংখ্যা দ্বারা গুণিত প্রথম সারণীতে সারি সংখ্যার সমান।
ক্রস জোইন কার্টেসিয়ান পণ্য / কার্টেসিয়ান যোগ হিসাবেও পরিচিত
টেবিল এ-এর সারিগুলির সংখ্যা এম, টেবিল বি এর সারিগুলির সংখ্যা n এবং ফলস্বরূপ সারণিতে এম * এন সারি থাকবে
FROM t1 FULL OUTER JOIN t2 ON t1.id=t2.id
সবসময় কি দ্রুত হবেFROM t1,t2 WHERE t1.id=t2.id
?