تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طريقة الضم LEFT JOIN متعددة
#1
السلام عليكم

هذا مثال للكود 
لثلاثة جداول و عملت عليهم ربط 
الان اريد ان اضيف  عمود Age من جدول D
كود :
SELECT A.COD,a.namee, B.NAMEE,C.NAMEE

FROM  ((A INNER JOIN B ON A.COD = B.COD)
               LEFT JOIN C ON A.COD = C.COD)
يعني المتوقع هذا الكود

كود :
SELECT A.COD, a.name , B.NAME,C.NAME ,D.Age
FROM  ((A INNER JOIN B ON A.COD = B.COD)
               LEFT JOIN C ON A.COD = C.COD) , D
لكن في الاكسس تظهر رسالة خطاء نص الرسالة تفيد ان طريقة JOIN غير معتمدة 


هل توجد طريقة لحل هذا الامر
الرد }}}
تم الشكر بواسطة:
#2
لماذا لا تستخدم Query Design View اسهل في الاكسس

   

   

   

   

بكل بساطة تجد الاستعلام المطلوب

كود :
SELECT A.cod, A.namee, B.namee, C.namee, D.Age

FROM D INNER JOIN (C INNER JOIN (B INNER JOIN A ON B.cod = A.cod) ON C.cod = A.cod) ON D.cod = A.cod;
الرد }}}
تم الشكر بواسطة: asemshahen5 , أشرف كريم 2 , ابراهيم ايبو
#3
(04-11-21, 03:48 PM)Anas Mahmoud كتب : لماذا لا تستخدم Query Design View اسهل في الاكسس









بكل بساطة تجد الاستعلام المطلوب

كود :
SELECT A.cod, A.namee, B.namee, C.namee, D.Age

FROM D INNER JOIN (C INNER JOIN (B INNER JOIN A ON B.cod = A.cod) ON C.cod = A.cod) ON D.cod = A.cod;
اشكرك على الرد لكن اريد ان اجعل البيانات من العمود A تظهر حتى لو لم توجد بيانات في العمود C او B
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#4
اعذرني ما تطلبه هو فعلا Left join

ويمكنك فعل ذلك ايضا باستخدام Query Design ،

اضغط على اي من الاسهم  التي تمثل العلاقة بين الجدولين ضغطا مزدوجا

ومن ثم اختار الاختيار الثاني الذي يضم كافة حقول جدول a

   

وستعمل ان شاء الله 

   

هذا الاستعلام يصبح مقبول بالنسبة ل access

كود :
SELECT A.cod, A.namee, B.namee, C.namee, D.Age
FROM ((A LEFT JOIN D ON A.cod = D.cod) LEFT JOIN C ON A.cod = C.cod) LEFT JOIN B ON A.cod = B.cod;
الرد }}}
#5
(04-11-21, 08:57 PM)Anas Mahmoud كتب : اعذرني ما تطلبه هو فعلا Left join

ويمكنك فعل ذلك ايضا باستخدام Query Design ،

اضغط على اي من الاسهم  التي تمثل العلاقة بين الجدولين ضغطا مزدوجا

ومن ثم اختار الاختيار الثاني الذي يضم كافة حقول جدول a



وستعمل ان شاء الله 



هذا الاستعلام يصبح مقبول بالنسبة ل access

كود :
SELECT A.cod, A.namee, B.namee, C.namee, D.Age
FROM ((A LEFT JOIN D ON A.cod = D.cod) LEFT JOIN C ON A.cod = C.cod) LEFT JOIN B ON A.cod = B.cod;

اذا كان يوجد 3  سجلات في جدول A و ثلاث سجلات في جدول D
عند الاستعلام اريد جميع السجلات من جدول A و جدول D

اعلم انه سيكون هناك تكرار في الاستعلام لأنه بدون قيود سيكون الناتج 9 سجلات من الجدولين و انا اريد ذألك لأني سأضع شروط على الجدولين
لكن اريد بنفس الوقت بيانات من جدولين B و C لكن اريد ربط B و C بجدول  A



كود :
SELECT [الدليل].رقم_الحساب, [الدليل].الاسم, [العملة].الاسم, [الارصدة].رقم_الحساب

FROM

((الدليل INNER JOIN العملة ON [الدليل].العملة = [العملة].العملة)

LEFT JOIN الارصدة ON [الدليل].رقم_الحساب = [الارصدة].رقم_الحساب)

RIGHT JOIN مركز ON [الارصدة].رقم_المركز = [مركز].رقم_المركز;

اريد تنفيذ هذا الاستعلام 
هذا هو المقصود لكن اكسس يرفض ذالك لماذا
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#6
اخي الكريم هلا شاركت معنا تفاصيل اعمدة الجداول من a الى d والحقول التي تريدها ان تنضم الى الاستعلام وياحبذا لو مثال على البيانات داخل الجداول وماتتوقعه كنتيجةللاستعلام ، وباذن الله نساعدك لاني احس انني اسير في الاتجاه الخاطئ بارك الله فيك
الرد }}}
#7
(05-11-21, 02:59 AM)Anas Mahmoud كتب : اخي الكريم هلا شاركت معنا تفاصيل اعمدة الجداول من a الى d والحقول التي تريدها ان تنضم الى الاستعلام وياحبذا لو مثال على البيانات داخل الجداول وماتتوقعه كنتيجةللاستعلام ، وباذن الله نساعدك لاني احس انني اسير في الاتجاه الخاطئ بارك الله فيك


هذا المرفق يوضح المطلوب وفيه الاستعلام جاهز عند عملية ارسال الاستعلام من لغة البرمجة يظهر رسالة خطأ 
تبين ان عملية الانضمام ليست معتمدة
لكن في الاكسس شغال
ملاحظة اذا دخلت على محرر sql و غيرت اي شي حتى لو اضفت مسافة في المحرر و تراجعت بي ctrl+z يرفض الاستعلام تمام بعد ان كان شغال في الاكسس مباشرة
لا اعلم لماذا 
و اعتقد ان سبب الرفض عند الارسال يعود لنفس السبب عند اي تغير في المحرر sql

https://drive.google.com/file/d/1GZD6YUH...sp=sharing
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5 , ابراهيم ايبو
#8
الحل اخي الكريم ان تفصل الاستعلامات استعلام لكل ما له علاقة ببعض 

قمت بعمل استعلام للمراكز والارصدة وقمت بجعله يظهر جميع حقول المراكز سميته CenterStocks :


   

   


كود :
SELECT center.*, Stocks.Debtor, Stocks.Creditor
FROM center LEFT JOIN Stocks ON center.No_Center = Stocks.No_Center;



واستعلام اخر للدليل والعملات سميته GuidesCoinsNames :


   

   


كود :
SELECT Guide.No_Guide, Guide.Namee, Coin.Namee
FROM Guide INNER JOIN Coin ON Guide.No_Coin = Coin.No_Coni;

وهكذا كل ما علينا فعله هو اضافة الاستعلامين الى استعلام جديد سميته MasterQuery بدون اي اسهم او اي شيء فقط اضف كل الحقول من  الاستعلامين  :
 

   

   


كود :
SELECT GuidesCoinsNames.*, CenterStocks.*, *
FROM GuidesCoinsNames, CenterStocks;

هذا كل شيء


الان كل ما عليك فعله داخل الفيجوال بيسيك هو استدعاء الاستعلام MasterQuery :

كود :
Select * from MasterQuery

 
ملاحظة انت على الخيار في ان تستخدم الاستعلامات المخزنة في قاعدة البيانات الاكسس كما فعلت انا ، او ان تستخدم صيغة الاستعلام الطويلة ،اذا اردت الاستعلام في خطوة واحدة فاليك هذا :



كود :
SELECT *
FROM  (SELECT Guide.No_Guide, Guide.Namee, Coin.Namee FROM Guide INNER JOIN Coin ON Guide.No_Coin = Coin.No_Coni)  AS x,
(SELECT center.No_Center, center.namee, Stocks.Debtor, Stocks.Creditor FROM center LEFT JOIN Stocks ON center.No_Center = Stocks.No_Center)  AS y

يعطي نفس النتيجة من مرة واحدة ولكني لا احبذه لتعقيده الشديد ، احب تبسيط المسائل وتجزيئها 

ارفقت اليك مثال يجرب الطريقة المدرجة والاستعلام الجاهز وطريقة الاستعلام الواحد الطويل ونفس النتيجة

   

وفقك الله


الملفات المرفقة
.zip   AccessQuery.zip (الحجم : 43.31 ك ب / التحميلات : 6)
الرد }}}
#9
(05-11-21, 06:33 PM)Anas Mahmoud كتب : الحل اخي الكريم ان تفصل الاستعلامات استعلام لكل ما له علاقة ببعض 

قمت بعمل استعلام للمراكز والارصدة وقمت بجعله يظهر جميع حقول المراكز سميته CenterStocks :







كود :
SELECT center.*, Stocks.Debtor, Stocks.Creditor
FROM center LEFT JOIN Stocks ON center.No_Center = Stocks.No_Center;



واستعلام اخر للدليل والعملات سميته GuidesCoinsNames :







كود :
SELECT Guide.No_Guide, Guide.Namee, Coin.Namee
FROM Guide INNER JOIN Coin ON Guide.No_Coin = Coin.No_Coni;

وهكذا كل ما علينا فعله هو اضافة الاستعلامين الى استعلام جديد سميته MasterQuery بدون اي اسهم او اي شيء فقط اضف كل الحقول من  الاستعلامين  :
 






كود :
SELECT GuidesCoinsNames.*, CenterStocks.*, *
FROM GuidesCoinsNames, CenterStocks;

هذا كل شيء


الان كل ما عليك فعله داخل الفيجوال بيسيك هو استدعاء الاستعلام MasterQuery :

كود :
Select * from MasterQuery

 
ملاحظة انت على الخيار في ان تستخدم الاستعلامات المخزنة في قاعدة البيانات الاكسس كما فعلت انا ، او ان تستخدم صيغة الاستعلام الطويلة ،اذا اردت الاستعلام في خطوة واحدة فاليك هذا :



كود :
SELECT *
FROM  (SELECT Guide.No_Guide, Guide.Namee, Coin.Namee FROM Guide INNER JOIN Coin ON Guide.No_Coin = Coin.No_Coni)  AS x,
(SELECT center.No_Center, center.namee, Stocks.Debtor, Stocks.Creditor FROM center LEFT JOIN Stocks ON center.No_Center = Stocks.No_Center)  AS y

يعطي نفس النتيجة من مرة واحدة ولكني لا احبذه لتعقيده الشديد ، احب تبسيط المسائل وتجزيئها 

ارفقت اليك مثال يجرب الطريقة المدرجة والاستعلام الجاهز وطريقة الاستعلام الواحد الطويل ونفس النتيجة



وفقك الله

انا اشكرك جداااااااااااااااااااااااااااااااااااااااااااااااا شكر عنيف شكر خاااااااااااااااااااااااااااااااااااص شكر حللللللللللللللللللللللللللللللو
افدتني كثيرا بطلب منك طلب دلني على رابط اتعلم منة الاستعلامات اكسس من النت
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , Anas Mahmoud , أشرف كريم 2
#10
اخي الكريم اخواننا هنا يدلوك اكثر مني ان شاء الله
أنا هاوي جدا في ما يتعلق بالاكسس ولكني احب التجربة لا اكثر
الرد }}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [SQL] استفسار عن طريقة تحزم قواعد بيانات MSSQL مع البرنامج VB.NET2019 salemq 2 538 18-05-23, 03:02 AM
آخر رد: سعود
  طريقة أضافة اكثر من سيرفر على نفس قاعدة البيانات alim54 0 1,147 20-06-21, 11:20 PM
آخر رد: alim54
  طلب طريقة تصدير قاعدة بيانات m4n2net2000 0 1,247 12-11-20, 01:59 PM
آخر رد: m4n2net2000
  سؤال : طريقة ربط الفيجوال بيسك بقاعدة بيانات mysql عن طريق صفحة php وسيطة alfaiz678 6 4,039 02-10-20, 07:42 AM
آخر رد: alfaiz678
  طريقة ادخال اعداد تحتوي على فاصلة في قاعدة البيانات segma 21 5,854 12-03-19, 10:23 PM
آخر رد: segma
  السلام عليكم طريقة عرض السجلات بطريقة افقية mohamedgadain61 0 2,013 16-10-18, 05:01 PM
آخر رد: mohamedgadain61
  المساعدة في طريقة تحويل اسماء حقول الداتا كريد فيو الى العربية وادي العوضي 7 3,195 08-07-17, 03:07 PM
آخر رد: وادي العوضي
  [سؤال] السلام عليكم عندي سوال وهو طريقة جعل ال server وسيط بين عدة clients jalal alfarawi 3 2,397 31-05-17, 11:30 PM
آخر رد: Adrees
  [C#.NET] طلب طريقة الاتصال بقاعدة بيانات firebase Riad dz 0 1,969 10-04-17, 09:56 PM
آخر رد: Riad dz
Bug [Acces2010] طريقة استدعاء بيانات النزيل القديم برقم الهوية يسرى7 12 4,950 18-01-17, 09:42 PM
آخر رد: يسرى7

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم