سعيد يوسف نشر 8 أكتوبر 2021 أرسل تقرير نشر 8 أكتوبر 2021 لدي استعلام SQL وفيه JOIN فهل تغيير ترتيب الجداول قبل JOIN وبعدها يغير في النتيجة؟ 2 اقتباس
0 Hassan Hedr نشر 8 أكتوبر 2021 أرسل تقرير نشر 8 أكتوبر 2021 في حال كان الدمج JOIN عاديا فلا يوجد فرق في ترتيب الجداول قبل وبعد JOIN a JOIN b # تساوي b JOIN a أما إذا كنت تستعمل النوع LEFT أو RIGHT أو FULL من JOIN فالترتيب مهم لأن معنى العبارة يختلف فالجدول قبل JOIN يسمى يساري وبعدها يسمى يميني a LEFT JOIN b # لا تساوي b LEFT JOIN a a RIGHT JOIN b # لا تساوي b RIGHT JOIN a a FULL JOIN b # لا تساوي b FULL JOIN a اقتباس
0 Ahmed Sharshar نشر 9 أكتوبر 2021 أرسل تقرير نشر 9 أكتوبر 2021 (معدل) اذا كنت تقصد تغيير في شكل النتيجة، فلا، join العادية لا تؤثر في شكل الخرج حيث أن : Table1 JOIN Table 2 = Table2 JOIN Table1 ونفس الوضع بالنسبة ل INNER JOIN و NATURAL JOIN . لكن على صعيد الأداء، فبالتاكيد هناك فرق، حيث أن JOIN تقوم بدمج عناصر الجدول الأول مع الجدول الثاني، وذلك فان عدد عناصر كل جدول يفرق في الاداء وبالتالي ترتيبيهم حيث يبدا بايجاد العمود الأول والبحث عن تطابق بين كل عنصر فيه وكل الجدول الثاني. أما بالنسبة ل LEFT JOIN , RIGHT JOIN , فالترتيب يفرق حتى في شكل الخرج وذلك لانه يهتم بترتيب الجداول، وقد يجد تطابق اذا كان Table1 اولا لكنه لا يجد اذا كان Table1 ثانيا وهكذا. تم التعديل في 9 أكتوبر 2021 بواسطة Ahmed Sharshar اقتباس
1 Wael Aljamal نشر 10 أكتوبر 2021 أرسل تقرير نشر 10 أكتوبر 2021 تبديل تررتيب الجداول يؤثر على نتيجة استعلام LEFT - RIGHT _ FULL حيث أن فيهم الربط يعتمد على عرض جميع بيانات أحد الجدولين (حسب جهة العرض) ثم البحث عن عنصر مقابل في الجدول الآخر، لذلك البيانات تختلف. أما في الربط الداخلي INNER JOIN نحصل على نفس النتيجة لكن ترتريب الأعمدة يختلف باختلاف ترتيب الدمج Table col1 col2 A a1 a2 B b1 b2 select * from A, B => a1, a2, b1, b2 select * from B, A => b1, b2, a1, a2 ولتثبيت ترتريب الأعمدة علينا تحديدهم في عبارة SELECT select a1, b1, b2, a2 from B, A => a1, b1, b2, a2 بالنسبة للدمج اليساري: سوف نثبت جدول الزبائن، ولكل زبون نبحث عن الطلبية التي تعود له LEFT JOIN Example SELECT cust_id, cust_name, order_num, order_date FROM customer LEFT JOIN orders ON customer.cust_id = orders.order_id WHERE order_date < '2020-04-30'; بالنسبة للدمج اليميني: سوف نثبت جدول الطلبيات، ولكل طلبية نبحث عن الزبون صاحبها الذي يعود إليها RIGHT JOIN Example SELECT cust_id, cust_name, occupation, order_num, order_date FROM customer RIGHT JOIN orders ON cust_id = order_id ORDER BY order_date; عندما لانجد بيانات من الجدول الثانوي سيعيد NULL وفي حال عمل FULL JOIN سنلحظ ربما وجود قيم فارغة في كلا الحقلين لأنه ليس شرطا تقابل القيم من كلا الجدولين 1 اقتباس
السؤال
سعيد يوسف
لدي استعلام SQL وفيه JOIN فهل تغيير ترتيب الجداول قبل JOIN وبعدها يغير في النتيجة؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.