জয়ন ও ইউনিয়নের মধ্যে পার্থক্য কী?


252

মধ্যে পার্থক্য কি JOINএবং UNION? আমার কি উদাহরণ থাকতে পারে?


যে কোনও আধুনিক ডিবিএস, মারিয়াডিবি-র মতো , একটি ইউএনআইএন জয়ন কমান্ড প্রয়োগ করে। এটি একটি এসকিউএল & nbsp; 3 আদেশ, তবে এটি সুপরিচিত বা ব্যবহৃত হয়নি। ইউনিয়ন যোগদানের বিষয়ে আরও শিখুন ।
অস্টন

উত্তর:


301

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)

6
আপনি কি দয়া করে আমাকে বলতে পারেন যে একটি কী UNION-JOINএবং আমি কীভাবে এটি স্ট্যান্ডার্ড এসকিউএল সম্পাদন করতে পারি? মারিয়া ডিবি-র একটি কমান্ড রয়েছে union join, তবে অন্যান্য ডাটাবেসগুলিতে নেই। ধন্যবাদ।
এরান মোরাড

72

এক বা একাধিক টেবিল থেকে ডেটা একত্রিত করতে যোগদান এবং ইউনিয়নগুলি ব্যবহার করা যেতে পারে। পার্থক্যটি কীভাবে ডেটা একত্রিত করা হয় তার মধ্যে রয়েছে।

সহজ কথায়, ডেটাগুলিকে নতুন কলামগুলিতে একত্রিত করে । যদি দুটি টেবিল এক সাথে যুক্ত হয়, তবে প্রথম টেবিলের তথ্য একই সারিতে দ্বিতীয় টেবিলের কলামের পাশাপাশি কলামের একটি সেটে প্রদর্শিত হবে।

ইউনিয়নগুলি নতুন সারিগুলিতে ডেটা একত্রিত করে। যদি দুটি টেবিল একসাথে "একত্রিত" হয়, তবে প্রথম টেবিল থেকে প্রাপ্ত ডাটাগুলি সারিগুলির একটি সেটে এবং অন্য সেটটিতে দ্বিতীয় টেবিলের ডেটা। সারি একই ফলাফল হয়।

এখানে একটি যোগদানের একটি ভিজ্যুয়াল চিত্রায়ন রয়েছে। সারণি A এবং B এর কলামগুলি একক ফলাফলের সাথে একত্রিত হয়।

এখানে চিত্র বর্ণনা লিখুন

ফলাফলের প্রতিটি সারিতে দুটি সারণী A এবং B. এর কলামগুলি থাকে যখন একটি টেবিলের কলামগুলি অন্য থেকে কলাম মেলে তখন সারি তৈরি হয়। এই ম্যাচটিকে যোগদানের শর্ত বলে।

মানগুলি সন্ধানের জন্য এবং ফলাফলগুলিতে সেগুলি অন্তর্ভুক্ত করার জন্য এটি সত্যিই দুর্দান্ত যোগদান করে। এটি সাধারণত ডেনারালাইমাইজিং (স্বাভাবিককরণের বিপরীতকরণ) এর ফলাফল এবং অন্য টেবিলে প্রাথমিক কী ব্যবহার করে কলাম মানগুলি সন্ধান করার জন্য একটি টেবিলে বিদেশী কী ব্যবহার করে।

এখন উপরের চিত্রটি একটি ইউনিয়নের সাথে তুলনা করুন। একটি ইউনিয়নে ফলাফলের মধ্যে প্রতিটি সারি একটি টেবিল বা অন্যটি থেকে হয়। ইউনিয়নে, ফলাফলগুলি তৈরি করতে কলামগুলি একত্রিত হয় না, সারিগুলি একত্রিত হয়।

এখানে চিত্র বর্ণনা লিখুন

যোগ দেয় এবং ইউনিয়ন উভয়ই এক বা একাধিক টেবিলের তথ্য একক ফলাফলের সাথে সংযুক্ত করতে ব্যবহৃত হতে পারে। তারা উভয় এই বিভিন্ন উপায় সম্পর্কে যান। বিভিন্ন টেবিলে থাকা কলামগুলি একত্রিত করার জন্য একটি জোড় ব্যবহার করা হলেও, সারিটি একত্রিত করতে ইউনিয়নটি ব্যবহৃত হয়।

উৎস


4
এটি দুর্দান্ত একটি দর্শনীয় উদাহরণ। অন্যান্য উত্তরগুলির পরে আমি বুঝতে পেরেছিলাম বেশ নিশ্চিত, তবে এটি এটি সম্পূর্ণরূপে পরিষ্কার হয়ে গেছে।
seadoggie01

যোগদানের উদাহরণ হিসাবে, প্রযুক্তিগতভাবে বলতে গেলে, ফলাফলের জন্য 10 টি কলামের মতো হওয়া উচিত নয়?
ভরথ রাম

60

ইউনিয়ন দুটি বা ততোধিক প্রশ্নের ফলাফলগুলিকে একক ফলাফলের সাথে সংযুক্ত করে যা ইউনিয়নে সমস্ত প্রশ্নের সাথে সম্পর্কিত সমস্ত সারি অন্তর্ভুক্ত করে।

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সত্য।


যোগদান এক * বা আরও সারণী থেকে ডেটা পুনরুদ্ধার করতে পারে Join অগত্যা দুটোই নয়
কেনেট সেলেস্তে

51

আপনি উভয়ের জন্য একই পরিকল্পনামূলক ব্যাখ্যা দেখতে পাচ্ছেন তবে এগুলি সম্পূর্ণ বিভ্রান্তিকর।

ইউনিয়নের জন্য:

এখানে চিত্র বিবরণ লিখুন

যোগদানের জন্য:

এখানে চিত্র বিবরণ লিখুন


9
এই চিত্রগুলি বোঝায় যে FULL OUTER JOINUNION
এটির

1
এই উত্তরটি নির্দেশ করে যে এই চিত্রগুলি বিভ্রান্ত করছে (যা তারা আইএমও) তবে কেন বা মূল প্রশ্নের দিকে কোনও ব্যাখ্যা দেওয়ার প্রস্তাব দেয় না।
জোশ ডি

1
ডায়াগ্রাম সহ প্রতিটি চিত্র পুরোপুরি পরিস্থিতি ব্যাখ্যা করে। সমস্ত চিত্রটি একত্রিত করতে পারে এমন একক চিত্র নেই। এটি আরও বিভ্রান্তিকর হবে।
জাভা মেইন

41

যোগদান করুন:

বিভিন্ন টেবিল থেকে একই বা বিভিন্ন নামের সাথে কলামগুলি প্রদর্শনের জন্য একটি জয়েন ব্যবহৃত হয়। প্রদর্শিত আউটপুটটিতে সমস্ত কলাম পৃথকভাবে প্রদর্শিত হবে। অর্থাৎ, কলামগুলি একে অপরের পাশে প্রান্তিককরণ করা হবে।

মিলন:

ইউনিয়ন সেট অপারেটরটি দুটি টেবিলের ডেটা সংমিশ্রনের জন্য ব্যবহৃত হয় যা একই ডেটাটাইপের সাথে কলাম রয়েছে। যখন একটি ইউনিয়ন সঞ্চালিত হয় তখন উভয় টেবিল থেকে ডেটা একই ডাটাবেটযুক্ত একক কলামে সংগ্রহ করা হবে।

উদাহরণ স্বরূপ:

নীচে প্রদর্শিত দুটি সারণী দেখুন:

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

21

তারা সম্পূর্ণ আলাদা জিনিস।

একটি যোগদান আপনাকে বিভিন্ন টেবিলগুলিতে অনুরূপ ডেটা সম্পর্কিত করতে দেয়।

একটি ইউনিয়ন দুটি পৃথক প্রশ্নের ফলাফলকে একক রেকর্ডসেট হিসাবে প্রদান করে।


9

ইউনিয়ন দুটি প্রশ্নের মতো করে তোলে। একটি একক ক্যোয়ারী স্টেটমেন্টে দু'একটি বেশি টেবিল পরীক্ষা করার জন্য যোগ দেয়


3

এক বা একাধিক টেবিল থেকে ডেটা একত্রিত করতে যোগদান এবং ইউনিয়নগুলি ব্যবহার করা যেতে পারে। পার্থক্যটি কীভাবে ডেটা একত্রিত করা হয় তার মধ্যে রয়েছে।

সহজ কথায়, ডেটাগুলিকে নতুন কলামগুলিতে একত্রিত করে। যদি দুটি টেবিল এক সাথে যুক্ত হয়, তবে প্রথম টেবিলের তথ্য একই সারিতে দ্বিতীয় টেবিলের কলামের পাশাপাশি কলামের একটি সেটে প্রদর্শিত হবে।

ইউনিয়নগুলি নতুন সারিগুলিতে ডেটা একত্রিত করে। যদি দুটি টেবিল একসাথে "একত্রিত" হয়, তবে প্রথম টেবিল থেকে প্রাপ্ত ডাটাগুলি সারিগুলির একটি সেটে এবং অন্য সেটটিতে দ্বিতীয় টেবিলের ডেটা। সারি একই ফলাফল হয়।


1

মনে রাখবেন ইউনিয়ন ফলাফলগুলি মার্জ করবে ( নিশ্চিত হওয়ার জন্য এসকিউএল সার্ভার ) (বৈশিষ্ট্য বা বাগ?)

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


6
এটি এএনএসআই স্ট্যান্ডার্ড অনুসারে, ইউনিয়ন সব ফলাফলকে একীভূত করে না
vzczc


0

১. এসকিউএল জিনস ক্লজটি একটি ডাটাবেসে দুই বা ততোধিক টেবিলের রেকর্ড একত্রিত করতে ব্যবহৃত হয়। JOIN প্রতিটি সারণির মান দুটি ব্যবহার করে দুটি টেবিল থেকে ক্ষেত্রগুলিকে একত্রিত করার একটি মাধ্যম is

2. এসকিউএল ইউনিয়ন অপারেটর দুটি বা ততোধিক নির্বাচনী বিবৃতিগুলির ফলাফলকে একত্রিত করে। ইউনিয়নের মধ্যে প্রতিটি নির্বাচনী বিবৃতিতে একই সংখ্যক কলাম থাকতে হবে। কলামগুলিতে অবশ্যই একই জাতীয় ডেটা থাকতে হবে। এছাড়াও, প্রতিটি নির্বাচনী বিবৃতিতে কলামগুলি একই ক্রমে থাকতে হবে।

উদাহরণস্বরূপ: টেবিল 1 গ্রাহক / টেবিল 2 অর্ডার

ভেতরের যোগ দিতে:

নির্বাচন আইডি, NAME, AMOUNT, তারিখ

গ্রাহকদের কাছ থেকে


অর্ডার যোগ দিন


CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ;

মিলন:

নির্বাচন আইডি, NAME, AMOUNT, তারিখ


গ্রাহকদের কাছ থেকে


বাম অর্ডার যোগ দিন


CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ

মিলন

নির্বাচন করুন আইডি, নাম, পরিমাণ, তারিখ গ্রাহকদের কাছ থেকে


সঠিক অর্ডার যোগ দিন


CUSTOMERS.ID = ORDERS.CUSTOMER_ID এ;


0

উসিং ইউনিয়ন

ইউনিয়ন দুটি বা ততোধিক প্রশ্নের ফলাফলকে একক ফলাফলের সাথে সংযুক্ত করে যা ইউনিয়নের সমস্ত প্রশ্নের সাথে সম্পর্কিত সমস্ত সারি অন্তর্ভুক্ত করে।

ইউনিয়নের উদাহরণ:
121 এএস [কলাম 1], 221 এএস [কলাম 2] নির্বাচন করুন
মিলন
321 এএস [কলাম 1], 422 এএস [কলাম 2] নির্বাচন করুন
আউটপুট:

কলাম 1 কলাম 2
-------------------
121 221
321 422

জয়েনস

যোগদান করুন, আপনি টেবিলগুলির মধ্যে যৌক্তিক সম্পর্কের ভিত্তিতে দুটি বা ততোধিক সারণী থেকে ডেটা পুনরুদ্ধার করতে পারেন।

যোগদানের উদাহরণ:
টি.এল.এল. থেকে একটি অভ্যন্তরীণ টিবিএলবি বি থেকে a.Id = বি.আইডি থেকে ক। কলাম 1, বি। কলাম 2 নির্বাচন করুন


-1

বিমূর্তে, তারা একই রকম, যে দুটি টেবিল বা ফলাফল সেট একত্রিত করা হচ্ছে, তবে ইউনিয়ন সত্যই ফলাফলের সেটগুলি একই সংখ্যার কলমের সাথে সংযুক্ত করার জন্য রয়েছে যেগুলি সিমিলার ডেটা টাইপগুলি রয়েছে। স্ট্রাকচার একই, কেবল নতুন সারি যুক্ত করা হচ্ছে।

যোগদানের ক্ষেত্রে, আপনি কোনও ভাগ করা / অনুরূপ কলাম নেই এমন কোনও কার্টেসিয়ান যোগ দিয়ে কোনও সম্ভাব্য কাঠামোর সাথে সারণী / ফলাফল সেটগুলি একত্রিত করতে পারেন।


-1

ইউনিয়ন অপারেটর কেবল দুটি বা ততোধিক নির্বাচনী বিবৃতি সংমিশ্রনের জন্য।

যদিও জোইন অভ্যন্তরীণ, বাহ্যিক, বাম বা ডান পদ্ধতি দ্বারা প্রতিটি সারণী থেকে সারি নির্বাচন করার জন্য রয়েছে।

পড়ুন এখানে এবং এখানে । উদাহরণ সহ আরও ভাল ব্যাখ্যা আছে।


-1

ইউনিয়ন অপারেশনটি সারিগুলির উল্লম্ব সমষ্টিগুলির মিলিত ফলাফল , ইউনিয়ন অপারেশনটি কলামগুলির অনুভূমিক সমষ্টিগতের মিলিত ফলাফল ।


-3

আমি হিসাবে সাধারণ পার্থক্য সম্পর্কে ভাবতে পছন্দ করি:

  • যোগদানের টেবিলগুলিতে যোগদান করুন
  • ইউনিয়ন (এবং সব) প্রশ্নের একত্রিত করে।

1
এটি প্রশ্নটি জাগিয়ে তোলে - যোগদানের বিষয়টি "যোগদান" এর শর্তে এবং ইউনিয়নের বর্ণিত অবজ্ঞাত "সম্মিলন" এর শর্তে উল্লেখ করা হয়। যাইহোক আপনি কী ভাবেন যে আপনি অতি উচ্চ-ভোট প্রাপ্ত 10-বছরের পুরানো উত্তরগুলি ছাড়িয়ে যা এটি "দরকারী" করে তোলে? (অলঙ্কৃত) ভোটদানের তীরের মাউসওভার পাঠ্যটি দেখুন।
ফিলিপ্সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.