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

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

Hamada Ahmed

السؤال

السلام عليكم

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

<?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');
?>

 

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

Recommended Posts

  • 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 معاً 

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

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

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

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

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

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

  • 0
بتاريخ 4 ساعات قال بلال زيادة:

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

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

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

  • 0
بتاريخ On 17‏/8‏/2021 at 13:47 قال Hamada Ahmed:

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

يجب إضافة ORDER BY DESC و تحديد كم صف يجلب عن طريق LIMIT 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']);

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...