• 0

كيفية ربط جدولين في قاعدة البيانات

السلام عليكم

في هذا البرنامج هناك قائمة منسدلة تظهر اخر رسالة للعضو

<?php
$stmt = $db->prepare('SELECT * FROM(SELECT * FROM messages WHERE recipient_id=? GROUP BY id DESC) as T GROUP BY T.sender_id ORDER BY id DESC');
$stmt->bind_param('i',$_SESSION['id']);
?>

ويتم عرض الرسائل في صفحة اخرى كالتالي

<?php
$stmt = $db->prepare('SELECT * FROM messages WHERE recipient_id =? AND sender_id=? OR recipient_id=? AND sender_id=? Order By id ASC');
$stmt->bind_param('iiii',$_SESSION['id'],$_GET['msgs'],$_GET['msgs'],$_SESSION['id']);
?>

والسؤال - كيف نربط كل كود منهم الخاص بجدول messages  نربطه بجدول الأعضاء accounts

انا لا اعرف كيف ندمج لهم هذا الكود ان كان الكود صحيحا ايضا ام لا

<?php
$stmt = $db->prepare('SELECT m.*, a.* FROM `messages` as m inner join `accounts` as a WHERE a.id=m.recipient_id AND a.id =m.sender_id');
?>

 

انشر على الشّبكات الاجتماعية


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

لربط جدولين أو أكثر نستخدم join وفي هذه الحالة يمكننا ربط الجدولين بهذا الشكل 

$stmt = $db->prepare('SELECT m.*, a.* FROM `messages` as m inner join `accounts` as a WHERE a.id=m.recipient_id OR a.id =m.sender_id');

لاحظ أنه كان لديك خطأ في الاستعلام و هو تشابه الشرط 

WHERE a.id=m.recipient_id AND a.id =m.sender_id'

فيجب أن يكون الشرط هنا من نوع OR  وليس AND لأنه لو لم تقم بتحويله OR ستحدث معك مشكلة و هي أنه لا يمكن الحقل id يساوي الحقلين recipient_id و sender_id معاً 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

شكرا اخي الفاضل على هذا التنبية

لكن كيف يمكن دمج الكود الاخير بكلا الكودين الاخرين

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 3 دقائق مضت قال Hamada Ahmed:

شكرا اخي الفاضل على هذا التنبية

لكن كيف يمكن دمج الكود الاخير بكلا الكودين الاخرين

هل ممكن توضح مقصدك بأي كودين تريد دمجهم ؟ 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 4 ساعات قال بلال زيادة:

هل ممكن توضح مقصدك بأي كودين تريد دمجهم ؟ 

اقصد ان الكود الاخير يظهر جميع الرساءل من جدول الرسائل كيف نجعلة يظهر اخر سالة للعضو كما في الكود الاول والمحادثة بين المرسل والمستقبل في الكود الثاني

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ On 17‏/8‏/2021 at 13:47 قال Hamada Ahmed:

اقصد ان الكود الاخير يظهر جميع الرساءل من جدول الرسائل كيف نجعلة يظهر اخر سالة للعضو كما في الكود الاول والمحادثة بين المرسل والمستقبل في الكود الثاني

يجب إضافة ORDER BY DESC و تحديد كم صف يجلب عن طريق LIMIT 1 , ولاحظ ان رقم 1 هو عدد الصفوف الذي نود جلبها عند تنفيذ الأستعلام, يمكنك تجربة تنفيذ ذلك و أخباري بالنتيجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

جربت شىء كهذا لكن لم ينجح

$$stmt = $db->prepare('SELECT * FROM("SELECT u.*, a.* FROM `users_chat` as u inner join `accounts` as a WHERE u.recipient_id=? GROUP BY u.id DESC") as T GROUP BY T.u.sender_id ORDER BY u.id DESC');

$stmt->bind_param('i',$_SESSION['id']);

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن