اذهب إلى المحتوى
  • 0

ربط جدولين SQL JOIN بالاعتماد على قيم من أعمدة مختلفة كشرط للدمج MySQL

Flutter Dev

السؤال

مرحبا جميعا

تحيه طيبه للجميع

أحاول استعمال LEFT JOIN اكثر من مره لنفس الجدول الامر ناجح لدي ولكن المشكلة في الجملة الشرطيه الكود كالتالي:

$sql="SELECT * FROM BookSpecifications 

LEFT JOIN FeaturesBook AS A ON A.t1 = BookSpecifications.IDBookSpecifications 
LEFT JOIN FeaturesBook AS B ON B.t2 = BookSpecifications.IDBookSpecifications 
WHERE A.IDSubject ='145' " ;

الكود بشكل أعلاه يعمل بشكل جيد ولكني احتاج الى وضع شرط لسطر الثاني ال IDSubject هنا احصل عليها من جدول FeaturesBook بحيث يصبح كالتالي:

$sql="SELECT * FROM BookSpecifications 

LEFT JOIN FeaturesBook AS A ON A.t1 = BookSpecifications.IDBookSpecifications 
LEFT JOIN FeaturesBook AS B ON B.t2 = BookSpecifications.IDBookSpecifications 
WHERE A.IDSubject ='145' AND  B.IDSubject ='145' " ;

بمعنى احضر السطرين لو يمتلكون IDSubject المذكور ولكن الان الكود لا يعمل لا اعلم لماذا ولكني احتاج الى وضع شرطين هل يوجد حل مختلف او ان طريقتي خطاء الذي وضعتها ؟ 

ياليت من لديه فكره عن الامر يفيدنا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

من الأفضل ذكر الغرض من الاستعلام بشكل عام ليصبح من السهل التفكير السليم بأفضل طريقة لجلب البيانات.

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

كما ترى، أنت تبحث عن تساوي خاصيتين من نسختين من الجدول لقيمة واحدة

FeaturesBook AS A ON A.t1 = BookSpecifications.IDBookSpecifications 
                     ^^^^
FeaturesBook AS B ON B.t2 = BookSpecifications.IDBookSpecifications 
                     ^^^^                       ^^^^^^^^^^^^^^^^^^^
                                                ^^^^^^^^^^^^^^^^^^^

إن كان الاستعلام غير مفهوم الهدف، فمن الصعب معرفة الحل الخاص به.

جرب الحل:

$sql="

SELECT * 

FROM 

BookSpecifications As B

LEFT JOIN 

FeaturesBook AS F 

ON 

F.t1 = B.IDBookSpecifications 
or 
F.t2 = B.IDBookSpecifications


WHERE F.IDSubject ='145';" ;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 دقائق مضت قال Wael Aljamal:

من الأفضل ذكر الغرض من الاستعلام بشكل عام ليصبح من السهل التفكير السليم بأفضل طريقة لجلب البيانات.

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

كما ترى، أنت تبحث عن تساوي خاصيتين من نسختين من الجدول لقيمة واحدة


FeaturesBook AS A ON A.t1 = BookSpecifications.IDBookSpecifications 
                     ^^^^
FeaturesBook AS B ON B.t2 = BookSpecifications.IDBookSpecifications 
                     ^^^^                       ^^^^^^^^^^^^^^^^^^^
                                                ^^^^^^^^^^^^^^^^^^^

إن كان الاستعلام غير مفهوم الهدف، فمن الصعب معرفة الحل الخاص به.


$sql="

SELECT * 

FROM 

BookSpecifications As B

LEFT JOIN 

FeaturesBook AS F 

ON 

F.t1 = B.IDBookSpecifications 
or 
F.t2 = B.IDBookSpecifications


WHERE F.IDSubject ='145';" ;

 

مرحبا اخي الكريم 

بارك لك فيك وزادك من واسع فضله الطريقة تعمل بشكل ممتاز 

 

والله يا اخوي انا بنفسي الامر لحس مخي قليلا ما أحاول القيام به عباره عن جدولين

الجدول الأول يحتوي على جميع الوان الكتب وثاني سوف يتم تخزين فيه الألوان التي يختارها المستخدم بحيث يمكنه اختيار اكثر من لون بعدها اقوم بالاستعلام عن الجدول الثاني الذي انا فقط أقوم بحفظ id  فيه التي حصلت عليها من الجدول الاول بمعنى ان الجدول الثاني عباره عن معرفها او ID مختلفات ولكن قد يكون المستخدم قام بعملية تخزين اكثر من معرف لذلك سيكون معرف المستخدم يمتلك اكثر من ID  لنفس الكتاب 

 

الامر ملخبط شوية ولكن هذا ابسط طريقة وجدتها مناسبه لعمل الامر بسبب رغبتي بفصل هذا الجزء عن جدول البيانات الأساسي حتى يسهل التعامل معها

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...