سؤال

ماهو الفرق بين JOIN و UNIONب هل يمكنني الحصول على مثال؟

هل كانت مفيدة؟

المحلول

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)

نصائح أخرى

اتحاد يجمع بين نتائج استعلنتين أو أكثر في مجموعة نتيجة واحدة تتضمن جميع الصفوف التي تنتمي إلى جميع الاستعلامات في الاتحاد.

باستخدام ينضم, ، يمكنك استرداد البيانات من طاولتين أو أكثر بناء على العلاقات المنطقية بين الجداول. تشير الإنضمام إلى كيفية استخدام SQL البيانات من جدول واحد لتحديد الصفوف في جدول آخر.

تختلف عملية الاتحاد عن استخدام الانضمام إلى الجمع بين الأعمدة من طاولتين.

مثال الاتحاد:

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 صحيح.

يمكن استخدام الإنضمام والنقابات لدمج البيانات من جدول واحد أو أكثر. الفرق يكمن في كيفية دمج البيانات.

بشروط بسيطة، يجمع بين البيانات في أعمدة جديدة. وبعد إذا تم ربط جدولين معا، فسيتم عرض البيانات من الجدول الأول في مجموعة واحدة من العمود إلى جانب عمود الجدول الثاني في نفس الصف.

تجمع النقابات البيانات في صفوف جديدة. إذا كانت طاولتين "نقابل" معا، فستكون البيانات من الجدول الأول في مجموعة واحدة من الصفوف، والبيانات من الجدول الثاني في مجموعة أخرى. الصفوف في نفس النتيجة.

إليك تصوير مرئي للانضمام. يتم دمج أعمدة جدول A و B في نتيجة واحدة.

enter image description here

يحتوي كل صف في النتيجة على أعمدة من كلا الجدول A و B. يتم إنشاؤه عند إنشاء الأعمدة من أعمدة تطابق جدول واحد من آخر. وتسمى هذه المباراة حالة الصلة.

هذا يجعل الانضمام رائع حقا للبحث عن القيم بما في ذلكها في النتائج. عادة ما يكون هذا نتيجة تنشره (عكس التطبيع) وتتضمن استخدام المفتاح الأجنبي في جدول واحد للبحث عن قيم الأعمدة باستخدام المفتاح الأساسي في آخر.

الآن مقارنة التصوير المذكور أعلاه مع اتفاقية الاتحاد. في اتحاد كل صف ضمن النتيجة هو من جدول أو آخر. في اتحاد، لا يتم دمج الأعمدة لإنشاء نتائج، يتم دمج الصفوف.

enter image description here

يمكن استخدام كلا المنصوصات والنقابات في الجمع بين البيانات من جدول واحد أو أكثر إلى نتائج واحدة. كلاهما يذهب حول هذه طرق مختلفة. في حين يتم استخدام الانضمام إلى الجمع بين الأعمدة من جداول مختلفة، يتم استخدام الاتحاد لجمع بين الصفوف.

مصدر

قد ترى نفس التفسيرات التخطيطية لكليهما، لكن هذه مربكة تماما.

للاتحاد:

Enter image description here

للانضمام:

Enter image description here

انضم:

يستخدم الانضمام لعرض الأعمدة بنفس أسماء مختلفة من الجداول المختلفة. سيكون الإخراج المعروض لديه كل الأعمدة الموضحة بشكل فردي. وهذا هو، سيتم محاذاة الأعمدة بجانب بعضها البعض.

اتحاد:

يتم استخدام مشغل UNION SET في الجمع بين البيانات من طاولتين له أعمدة بنفس نوع البيانات. عند إجراء الاتحاد، سيتم جمع البيانات من كلا الجداول في عمود واحد لديه نفس نوع البيانات.

علي سبيل المثال:

انظر الجدولين الموضحين أدناه:

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

الآن لأداء نوع الانضمام، يظهر الاستعلام أدناه.

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

هذا هو الانضمام.

Union يعني أنه يجب عليك الجداول أو النتائج بنفس المقدار ونوع الأعمدة وأنت تضيف هذا إلى الجداول / النواتج معا. انظر إلى هذا المثال:

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

1. يتم استخدام جملة JOINES SQL للجمع بين السجلات من طاولتين أو أكثر في قاعدة بيانات. تعد الانضمام وسيلة للجمع بين الحقول من جدولين باستخدام القيم المشتركة لكل منها.

2. يجمع مشغل SQL Union بين نتيجة اثنين أو أكثر من العبارات المحددة. يجب أن يكون لكل عبارة SELECT داخل الاتحاد نفس العدد من الأعمدة. يجب أن تحتوي الأعمدة أيضا على أنواع بيانات مماثلة. أيضا، يجب أن تكون الأعمدة في كل عبارة محددة بنفس الترتيب.

على سبيل المثال: الجدول 1 العملاء / الجدول 2 أوامر

صلة داخلية:

حدد الهوية، الاسم، المبلغ، التاريخ

من العملاء

أوامر الانضمام الداخلية

على العملاء .id = orders.customer_id؛

اتحاد:

حدد الهوية، الاسم، المبلغ، التاريخ

من العملاء

اليسار تاريخ الانضمام

على العملاء.

اتحاد

حدد الهوية، الاسم، المبلغ، التاريخ من العملاء

الحق في الانضمام

على العملاء .id = orders.customer_id؛

اتحاد USSING

يجمع الاتحاد بين نتائج استعلنتين أو أكثر في مجموعة نتيجة واحدة تتضمن جميع الصفوف التي تنتمي إلى جميع الاستعلامات في الاتحاد.

مثال الاتحاد: حدد 121 as [column1]، 221 as [column2] UNION SELECT حدد 321 as [column1]، 422 as [column2
الإخراج: العمود 1 العمود 2 ------------------- 121 221 321 422

USSING FOINES.

تنضم، يمكنك استرداد البيانات من طاولتين أو أكثر بناء على العلاقات المنطقية بين الجداول.

مثال على ذلك: حدد A.column1، b.column2 من TBLA A Inner Join TBLB B على A.ID = B.ID

في الملخص، فإنها متشابهة، في تلك الجداول أو مجموعات النتائج قد يتم دمجها، ولكن الاتحاد هو حقا بالنسبة للجمع بين مجموعات النتائج مع نفس العدد من الأعمدة مع الأعمدة التي تحتوي على أنواع بيانات مماثلة. الهيكل هو نفسه، يتم إضافة صفوف جديدة فقط.

عند الانضمام، يمكنك الجمع بين الطاولات / مجموعات النتائج بأي هيكل ممكن، بما في ذلك الانضمام الديكارتي حيث لا توجد أعمدة مشتركة / مشابهة.

مشغل الاتحاد هو فقط للدمج بين بيانين أو أكثر.

أثناء الانضمام هو اختيار الصفوف من كل جدول، إما عن طريق الطريقة الداخلية والخارجية أو اليسرى أو اليمنى.

تشير إلى هنا و هنا . وبعد هناك تفسير أفضل مع أمثلة.

يتم دمج عملية الاتحاد نتيجة رأسي إجمالي الصفوف، يتم دمج العملية النقابية نتيجة أفقي إجمالي الأعمدة.

أحب أن أفكر في الفرق العام كما هو:

  • ينضم إلى الجداول
  • الاتحاد (وآخرون) يجمع بين الاستفسارات.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top