উত্তর:
UNION
একে অপরের পরে অনুসন্ধানগুলি থেকে লাইন রাখে, যখন JOIN
কার্টেসিয়ান পণ্য তৈরি করে এবং এটি সাবসেট করে - সম্পূর্ণ আলাদা অপারেশন। এর তুচ্ছ উদাহরণ UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
এর অনুরূপ তুচ্ছ উদাহরণ JOIN
:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
UNION-JOIN
এবং আমি কীভাবে এটি স্ট্যান্ডার্ড এসকিউএল সম্পাদন করতে পারি? মারিয়া ডিবি-র একটি কমান্ড রয়েছে union join
, তবে অন্যান্য ডাটাবেসগুলিতে নেই। ধন্যবাদ।
এক বা একাধিক টেবিল থেকে ডেটা একত্রিত করতে যোগদান এবং ইউনিয়নগুলি ব্যবহার করা যেতে পারে। পার্থক্যটি কীভাবে ডেটা একত্রিত করা হয় তার মধ্যে রয়েছে।
সহজ কথায়, ডেটাগুলিকে নতুন কলামগুলিতে একত্রিত করে । যদি দুটি টেবিল এক সাথে যুক্ত হয়, তবে প্রথম টেবিলের তথ্য একই সারিতে দ্বিতীয় টেবিলের কলামের পাশাপাশি কলামের একটি সেটে প্রদর্শিত হবে।
ইউনিয়নগুলি নতুন সারিগুলিতে ডেটা একত্রিত করে। যদি দুটি টেবিল একসাথে "একত্রিত" হয়, তবে প্রথম টেবিল থেকে প্রাপ্ত ডাটাগুলি সারিগুলির একটি সেটে এবং অন্য সেটটিতে দ্বিতীয় টেবিলের ডেটা। সারি একই ফলাফল হয়।
এখানে একটি যোগদানের একটি ভিজ্যুয়াল চিত্রায়ন রয়েছে। সারণি A এবং B এর কলামগুলি একক ফলাফলের সাথে একত্রিত হয়।
ফলাফলের প্রতিটি সারিতে দুটি সারণী A এবং B. এর কলামগুলি থাকে যখন একটি টেবিলের কলামগুলি অন্য থেকে কলাম মেলে তখন সারি তৈরি হয়। এই ম্যাচটিকে যোগদানের শর্ত বলে।
মানগুলি সন্ধানের জন্য এবং ফলাফলগুলিতে সেগুলি অন্তর্ভুক্ত করার জন্য এটি সত্যিই দুর্দান্ত যোগদান করে। এটি সাধারণত ডেনারালাইমাইজিং (স্বাভাবিককরণের বিপরীতকরণ) এর ফলাফল এবং অন্য টেবিলে প্রাথমিক কী ব্যবহার করে কলাম মানগুলি সন্ধান করার জন্য একটি টেবিলে বিদেশী কী ব্যবহার করে।
এখন উপরের চিত্রটি একটি ইউনিয়নের সাথে তুলনা করুন। একটি ইউনিয়নে ফলাফলের মধ্যে প্রতিটি সারি একটি টেবিল বা অন্যটি থেকে হয়। ইউনিয়নে, ফলাফলগুলি তৈরি করতে কলামগুলি একত্রিত হয় না, সারিগুলি একত্রিত হয়।
যোগ দেয় এবং ইউনিয়ন উভয়ই এক বা একাধিক টেবিলের তথ্য একক ফলাফলের সাথে সংযুক্ত করতে ব্যবহৃত হতে পারে। তারা উভয় এই বিভিন্ন উপায় সম্পর্কে যান। বিভিন্ন টেবিলে থাকা কলামগুলি একত্রিত করার জন্য একটি জোড় ব্যবহার করা হলেও, সারিটি একত্রিত করতে ইউনিয়নটি ব্যবহৃত হয়।
ইউনিয়ন দুটি বা ততোধিক প্রশ্নের ফলাফলগুলিকে একক ফলাফলের সাথে সংযুক্ত করে যা ইউনিয়নে সমস্ত প্রশ্নের সাথে সম্পর্কিত সমস্ত সারি অন্তর্ভুক্ত করে।
JOIN ব্যবহার করে , আপনি টেবিলগুলির মধ্যে যৌক্তিক সম্পর্কের ভিত্তিতে দুটি বা ততোধিক টেবিল থেকে ডেটা পুনরুদ্ধার করতে পারেন। যোগদান করে যে কীভাবে এসকিউএলকে অন্য টেবিলের সারিগুলি নির্বাচন করতে এক টেবিল থেকে ডেটা ব্যবহার করা উচিত।
ইউনিয়ন অপারেশনটি দুটি টেবিলের কলামগুলিকে একত্রিত করে JOIN ব্যবহার করার চেয়ে পৃথক।
ইউনিয়নের উদাহরণ:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
আউটপুট:
Column1 Column2
-------------------
1 2
3 4
যোগদানের উদাহরণ:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
এটি উভয় সারণী থেকে সমস্ত সারি আউটপুট দেবে যার জন্য শর্তটি a.Id = b.AFKId
সত্য।
আপনি উভয়ের জন্য একই পরিকল্পনামূলক ব্যাখ্যা দেখতে পাচ্ছেন তবে এগুলি সম্পূর্ণ বিভ্রান্তিকর।
ইউনিয়নের জন্য:
যোগদানের জন্য:
বিভিন্ন টেবিল থেকে একই বা বিভিন্ন নামের সাথে কলামগুলি প্রদর্শনের জন্য একটি জয়েন ব্যবহৃত হয়। প্রদর্শিত আউটপুটটিতে সমস্ত কলাম পৃথকভাবে প্রদর্শিত হবে। অর্থাৎ, কলামগুলি একে অপরের পাশে প্রান্তিককরণ করা হবে।
ইউনিয়ন সেট অপারেটরটি দুটি টেবিলের ডেটা সংমিশ্রনের জন্য ব্যবহৃত হয় যা একই ডেটাটাইপের সাথে কলাম রয়েছে। যখন একটি ইউনিয়ন সঞ্চালিত হয় তখন উভয় টেবিল থেকে ডেটা একই ডাটাবেটযুক্ত একক কলামে সংগ্রহ করা হবে।
উদাহরণ স্বরূপ:
নীচে প্রদর্শিত দুটি সারণী দেখুন:
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
এখন একটি JOIN টাইপ করার জন্য কোয়েরিটি নীচে প্রদর্শিত হবে।
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
এটি একটি যোগদান।
ইউনিয়নের অর্থ হ'ল আপনাকে একই পরিমাণ এবং প্রকারের কলামগুলির সাথে সারণী বা ফলাফলসেট করতে হবে এবং আপনি এটি একসাথে সারণী / ফলাফলসেটে যুক্ত করতে পারেন। এই উদাহরণটি দেখুন:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
তারা সম্পূর্ণ আলাদা জিনিস।
একটি যোগদান আপনাকে বিভিন্ন টেবিলগুলিতে অনুরূপ ডেটা সম্পর্কিত করতে দেয়।
একটি ইউনিয়ন দুটি পৃথক প্রশ্নের ফলাফলকে একক রেকর্ডসেট হিসাবে প্রদান করে।
এক বা একাধিক টেবিল থেকে ডেটা একত্রিত করতে যোগদান এবং ইউনিয়নগুলি ব্যবহার করা যেতে পারে। পার্থক্যটি কীভাবে ডেটা একত্রিত করা হয় তার মধ্যে রয়েছে।
সহজ কথায়, ডেটাগুলিকে নতুন কলামগুলিতে একত্রিত করে। যদি দুটি টেবিল এক সাথে যুক্ত হয়, তবে প্রথম টেবিলের তথ্য একই সারিতে দ্বিতীয় টেবিলের কলামের পাশাপাশি কলামের একটি সেটে প্রদর্শিত হবে।
ইউনিয়নগুলি নতুন সারিগুলিতে ডেটা একত্রিত করে। যদি দুটি টেবিল একসাথে "একত্রিত" হয়, তবে প্রথম টেবিল থেকে প্রাপ্ত ডাটাগুলি সারিগুলির একটি সেটে এবং অন্য সেটটিতে দ্বিতীয় টেবিলের ডেটা। সারি একই ফলাফল হয়।
মনে রাখবেন ইউনিয়ন ফলাফলগুলি মার্জ করবে ( নিশ্চিত হওয়ার জন্য এসকিউএল সার্ভার ) (বৈশিষ্ট্য বা বাগ?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
আইডি, মান
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
আইডি, মান, আইডি, মান
1,3,1,3
১. এসকিউএল জিনস ক্লজটি একটি ডাটাবেসে দুই বা ততোধিক টেবিলের রেকর্ড একত্রিত করতে ব্যবহৃত হয়। JOIN প্রতিটি সারণির মান দুটি ব্যবহার করে দুটি টেবিল থেকে ক্ষেত্রগুলিকে একত্রিত করার একটি মাধ্যম is
2. এসকিউএল ইউনিয়ন অপারেটর দুটি বা ততোধিক নির্বাচনী বিবৃতিগুলির ফলাফলকে একত্রিত করে। ইউনিয়নের মধ্যে প্রতিটি নির্বাচনী বিবৃতিতে একই সংখ্যক কলাম থাকতে হবে। কলামগুলিতে অবশ্যই একই জাতীয় ডেটা থাকতে হবে। এছাড়াও, প্রতিটি নির্বাচনী বিবৃতিতে কলামগুলি একই ক্রমে থাকতে হবে।
উদাহরণস্বরূপ: টেবিল 1 গ্রাহক / টেবিল 2 অর্ডার
ভেতরের যোগ দিতে:
নির্বাচন আইডি, NAME, AMOUNT, তারিখ
গ্রাহকদের কাছ থেকে
অর্ডার যোগ দিন
CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ;
মিলন:
নির্বাচন আইডি, NAME, AMOUNT, তারিখ
গ্রাহকদের কাছ থেকে
বাম অর্ডার যোগ দিন
CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ
মিলন
নির্বাচন করুন আইডি, নাম, পরিমাণ, তারিখ গ্রাহকদের কাছ থেকে
সঠিক অর্ডার যোগ দিন
CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ;
উসিং ইউনিয়ন
ইউনিয়ন দুটি বা ততোধিক প্রশ্নের ফলাফলকে একক ফলাফলের সাথে সংযুক্ত করে যা ইউনিয়নের সমস্ত প্রশ্নের সাথে সম্পর্কিত সমস্ত সারি অন্তর্ভুক্ত করে।
ইউনিয়নের উদাহরণ: 121 এএস [কলাম 1], 221 এএস [কলাম 2] নির্বাচন করুন মিলন 321 এএস [কলাম 1], 422 এএস [কলাম 2] নির্বাচন করুন
আউটপুট: কলাম 1 কলাম 2 ------------------- 121 221 321 422
জয়েনস
যোগদান করুন, আপনি টেবিলগুলির মধ্যে যৌক্তিক সম্পর্কের ভিত্তিতে দুটি বা ততোধিক সারণী থেকে ডেটা পুনরুদ্ধার করতে পারেন।
যোগদানের উদাহরণ: টি.এল.এল. থেকে একটি অভ্যন্তরীণ টিবিএলবি বি থেকে a.Id = বি.আইডি থেকে ক। কলাম 1, বি। কলাম 2 নির্বাচন করুন
বিমূর্তে, তারা একই রকম, যে দুটি টেবিল বা ফলাফল সেট একত্রিত করা হচ্ছে, তবে ইউনিয়ন সত্যই ফলাফলের সেটগুলি একই সংখ্যার কলমের সাথে সংযুক্ত করার জন্য রয়েছে যেগুলি সিমিলার ডেটা টাইপগুলি রয়েছে। স্ট্রাকচার একই, কেবল নতুন সারি যুক্ত করা হচ্ছে।
যোগদানের ক্ষেত্রে, আপনি কোনও ভাগ করা / অনুরূপ কলাম নেই এমন কোনও কার্টেসিয়ান যোগ দিয়ে কোনও সম্ভাব্য কাঠামোর সাথে সারণী / ফলাফল সেটগুলি একত্রিত করতে পারেন।
আমি হিসাবে সাধারণ পার্থক্য সম্পর্কে ভাবতে পছন্দ করি: