• 0

الاستعلام من جدولين MySQL

السلام عليكم ورحمة الله وبركاته 

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

قمت بتطوير تطبيق من خلال flutter  التطبيق يسمح للمستخدمين القيام بنشر مواضيع عربيه مختلفه وكل موضوع يحتوي على مجموعة صور 4 صور بتحديد

في المقابل عملت جدولين في قاعدة البيانات 

الاول لحفظ المواضيع كالتالي:

topic table : 

--------------------------------------------------------------
id | subject_id | user_id | title
---------------------------------------------------------------
1  | 1          | 1       | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2  | 1          | 2       | مرحبا اخى الكريم هل لديك وقت كافى  

وثاني لحفظ صور المواضيع (تم ربطه لدى الجدول الاولى من خلال id  المواضيع )

Image table : 

--------------------------------------------------------------
id |  subject_id | imageUrl
---------------------------------------------------------------
1  |    1        | ************************
---------------------------------------------------------------
2  |    2        | ************************ 

 

المشكله الان كل موضع مثلا يمتلك 4 صور مختلفه في جدول الصور وموضع واحد في جدول المواضيع / الان انا احتاج الى جلب الموضع مع صوره واحده فقط حتى لا يحدث تكرار للمواضيع واحصل على نفس الموضوع 4 مرات اعتمادنا على عدد الصور 

 

قمت بعمل الاستعلام التالي ولكن ما حدث انه قام بجلب المواضيع بشكل متكرر بحسب عدد الصور يعني كل موضوع تكرر لدي اربع مرات وهذا الامر ليس صحيحا انا احتاج الى ان يتم جلب الموضوع لمره واحده فقط وليكون مرتبط ب اعلى id صور متواجد :

<?php

include 'con.php';


$sql = "SELECT * FROM topic INNER JOIN Image ON topic.subject_id=Image.subject_id WHERE topic.sta = 1 AND topics.Country = 'EG'" ;



$result = $con->query($sql);


$stmt = $con->prepare($sql); 



$stmt->execute();

$result = $stmt->get_result();



 
if ($result->num_rows >0) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
 // http_response_code(404);
    $json = json_encode(["result" => "No Data Foun"]);
}
 echo $json;
$con->close();

?>

كيف يمكن حل هذا المشكله حقيقه لم يسبق لي تطبيق هذا الامر لذلك الامر ليس واضح لدي

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

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


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

يمكنك تنفيذ الاستعلام الأول ومن ثم بداخل حلقة التكرار تنفيذ الاستعلام الثاني بناء على id من الاستعلام الأول لكل موضوع سأقوم بوضع مثال ربما يساعدك. 

$query = "SELECT p.id, p.name FROM product p WHERE p.product_id ='".$_GET['product_id']."'";
$resouter = mysqli_query($connect, $query);

$set = array();
$total_records = mysqli_num_rows($resouter);
if($total_records >= 1) {
	while ($link = mysqli_fetch_array($resouter, MYSQLI_ASSOC)){
		$set = $link;
	}
  $set1 = [];
  $q="select img,id from album where id = " . $set['id'];
  $results = mysqli_query($connect, $q);
  while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
      $set1[] = $row['img_url'];
  }
  $set['album'] = $set1;

}


header('Content-Type: application/json; charset=utf-8');
echo $val = str_replace('\\/', '/', json_encode($set));

 

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

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


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

يمكنك تنفيذ الاستعلام الأول ومن ثم بداخل حلقة التكرار تنفيذ الاستعلام الثاني بناء على id من الاستعلام الأول لكل موضوع سأقوم بوضع مثال ربما يساعدك. 


$query = "SELECT p.id, p.name FROM product p WHERE p.product_id ='".$_GET['product_id']."'";
$resouter = mysqli_query($connect, $query);

$set = array();
$total_records = mysqli_num_rows($resouter);
if($total_records >= 1) {
	while ($link = mysqli_fetch_array($resouter, MYSQLI_ASSOC)){
		$set = $link;
	}
  $set1 = [];
  $q="select img,id from album where id = " . $set['id'];
  $results = mysqli_query($connect, $q);
  while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
      $set1[] = $row['img_url'];
  }
  $set['album'] = $set1;

}


header('Content-Type: application/json; charset=utf-8');
echo $val = str_replace('\\/', '/', json_encode($set));

 

اهلا بك اخي الكريم ساقوم بتجربة الطريقة وافادتك

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

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


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

اهلا بك اخي الكريم ساقوم بتجربة الطريقة وافادتك

ايضا يمكنك تجربة وضع [] في السطر التالي إذا كان الاستعلام الأول لجلب جميع الحقول وليس حقل محدد حسب id الخاص به

$set[] = $link;

 

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

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


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

ايضا يمكنك تجربة وضع [] في السطر التالي إذا كان الاستعلام الأول لجلب جميع الحقول وليس حقل محدد حسب id الخاص به


$set[] = $link;

 

هلا بيك اخي

قمت بتجربه هو اعطاني مصفوفه جديده بالاسم الذي ننشاه ولكن المشكله انه ايضا جلب ال 4 صور المرتبطه بالموضوع 

لدي فكره مختلفه ولكن لا اعلم مدى نجاحها ولكن قد يكون من الاسهل اضافة حقل فريد اضافي في جدول الصور 

بمعنى لو قام المستخدم باضافة اربع صور يجب عليه اختيار صوره اساسيه وسيكون هذا الحقل يحتوي على الرقم 1 مثلا بمعنى احنا رح ناخذ التي يتوفر هذا الشرط بها ولكن الامر معقد شويه بنسبه الى فلاتر 

 

شاكر لك اخي الكريم

تمّ تعديل بواسطة مروان مروان3
1 شخص أعجب بهذا

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


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 2 ساعات قال مروان مروان3:

هلا بيك اخي

قمت بتجربه هو اعطاني مصفوفه جديده بالاسم الذي ننشاه ولكن المشكله انه ايضا جلب ال 4 صور المرتبطه بالموضوع 

لدي فكره مختلفه ولكن لا اعلم مدى نجاحها ولكن قد يكون من الاسهل اضافة حقل فريد اضافي في جدول الصور 

بمعنى لو قام المستخدم باضافة اربع صور يجب عليه اختيار صوره اساسيه وسيكون هذا الحقل يحتوي على الرقم 1 مثلا بمعنى احنا رح ناخذ التي يتوفر هذا الشرط بها ولكن الامر معقد شويه بنسبه الى فلاتر 

 

شاكر لك اخي الكريم

ممكن تطبيق فكرتك ، ايضا يبدو انك اخطأت في تنفيذ الطريقة المذكورة ، قم بتطبيق الفكرة التي لديك ثم شارك معي أي خطأ يظهر لك.

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


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

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

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

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


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

تسجيل الدخول

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


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