النتائج 1 إلى 10 من 10

الموضوع: ما الحل الأمثل لتقليل هذة الأستعلامات

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281

    ما الحل الأمثل لتقليل هذة الأستعلامات



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

    ما هو افضل حل لتقليل هذة الأستعلامات

    ارجو من محترفين sql افادتى

    الجدوال :-

    table -> sections_makal

    -> id
    -> date
    -> name

    ------------------------

    table -> makal

    -> id
    -> date
    -> name
    -> details

    ------------------------

    table -> sections_mobile

    -> id
    -> date
    -> name

    ------------------------

    table -> mobile

    -> id
    -> date
    -> name
    -> details


    ------------------------

    table -> sections_photos

    -> id
    -> date
    -> name

    ------------------------

    table -> photos

    -> id
    -> date
    -> name
    -> details





    <?


    $sql_a = mysql_query("select * from `sections_makal` order by id desc");
    while($row_a = mysql_fetch_array($sql_a)){

    $sql_makal = mysql_query("select from `makal` where id='$row_a[id]' order by id desc");

    while($row = mysql_fetch_array($sql_makal)){

    echo $row[id]." - "$row[name];

    }
    echo "\n".'<br />'."\n";
    }


    $sql_b = mysql_query("select * from `sections_mobile` order by id desc");
    while($row_b = mysql_fetch_array($sql_b)){

    $sql_mobile = mysql_query("select from `mobile` where id='$row_b[id]' order by id desc");

    while($row = mysql_fetch_array($sql_mobile)){

    echo $row[id]." - "$row[name];

    }
    echo "\n".'<br />'."\n";
    }


    $sql_c = mysql_query("select * from `sections_photos` order by id desc");
    while($row_c = mysql_fetch_array($sql_c)){

    $sql_photos = mysql_query("select from `photos` where id='$row_c[id]' order by id desc");

    while($row = mysql_fetch_array($sql_photos)){

    echo $row[id]." - "$row[name];

    }
    echo "\n".'<br />'."\n";
    }


    ?>







  2. #2
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    279


    السلام عليكم

    انا لست محترف SQL ولكن لدي ملحوظة بسيطة

    انك تستعلم من جدول makal باستخدام ال id لكل صف في sections_makalt

    فلو ان تقصد ان ده جدول اقسام وده جدول مقالات يبقي المفروض فى حقل تضيفه في هيكل جدول makal وليكن
    اسمه section_id علشان يبقي بيدل على القسم الخاص بالمقال لان انت كده (لو مش عامل الid مفتاح رئيسي فى جدول makal ) هيبقي عندك اكتر من قيمة متشابهة للحقل id والى هي هتكون نفس رقم ال id للقسم

    ارجو ان تكون فهمت ملحوظتي





    __________________


    Mohamed Mahmoud

    Mobile : +20103452846

    Blog : Hawy PHP

    Mail : Hawy [.] PHP [@] Gmail.com

    حسبي الله ونعم الوكيل


  3. #3
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


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

    وشاكر لك على محاولتك مساعدتى

    بأنتظار باقى محترفين flasher , egyptechno , hilaby , daif, DNSerror






  4. #4
    عضو جديد
    تاريخ التسجيل
    Aug 2007
    المشاركات
    28


    السلام عليكم
    اللي فهمته من كلامك لازم يكون هكذا

    table -> sections

    -> id
    -> date
    -> name
    -> type // هنا تحط نوع القسم مثلا مقال او صور او غيره

    ------------------------

    table -> post

    -> id
    -> date
    -> name
    -> details
    -> section_id //هذا رقم القسم

    و هذا الكود
    كود PHP:
    $sql_a mysql_query("select * from `sections` order by id desc");
    while(
    $row_a mysql_fetch_array($sql_a)){
        echo 
    "Category : ".$row_a["type"]."-".$row_a["name"]."<br />";
        
    $sql_makal mysql_query("select from `post` where section_id='".$row_a["id"]."' order by id desc limit 10");
        while(
    $row mysql_fetch_array($sql_makal)){
            echo 
    "Post : ".$row[id]." - "$row["name"]."<br />";
        }

    تقبل تحياتي





    __________________
    --
    SLB user



  5. اسف tech سؤالك غير واضح. ممكن تشرح لنا ماهي makal والطريقه التي تريد تضعها في الصفحه .. مثل ما تعرف فهم السؤال هو نصف الاجابه





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


    الى انا اقصدوا هل استطيع بدل ما اعمل استعلام عن اقسام المقالات ثم فى كل لوب يتم عرض محتويات القسام
    وهكذا بالنسبة لأقسام الصور وفى كل قسم يتم عرض محتويات الصورة
    وفى الموبايل كذلك . ويكون حدث عدد كبير جدا من الأستعلامات مع كثرة عدد الزوار يرهق mysql

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

    هل هذة الطريقة صعبة ام لايمكن تنفيذها

    table -> sections_makal
    -> id
    -> date
    -> name

    ------------------------

    table -> makal
    -> id
    -> date
    -> name
    -> details


    <?


    $sql_a = mysql_query("select * from `sections_makal` order by id desc");
    while($row_a = mysql_fetch_array($sql_a)){

    $sql_makal = mysql_query("select from `makal` where id='$row_a[id]' order by id desc");

    echo '<b>القسم : '.$row_a[name].'</b><br />';

    while($row = mysql_fetch_array($sql_makal)){

    echo $row[id]." - "$row[name];

    }

    echo "\n".'<br />'."\n";

    }




    ?>





    التعديل الأخير تم بواسطة tech ; 26-05-2008 الساعة 03:19 PM

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


    ما اريدوا بالضبط هو عمل لوب للأقسام ومع كل لوب يعرض احدث عشر مقالات من جدول makal بواسطة id الأقسام








  8. السلام، انا لا ارى اي جدوى من تسريع الكود، لان الطرق الاخرى سيساعد على تقليل عدد الاستعلامات ولكن يزيد التعقيد، والطرق الاخرى هو استخدام الجداول المؤقته، وهذا يستخدم مساحه ووقت اكبر .. الفكره هو باستخدام الدوال المساعده الخاصه بالMySQL .. فالحل الامثل هو باستخدم الCache واسهلها هي CacheLite، لاحظ انني قلت اسهلها ومع هذا فهو سريع ويفي بالغرض.
    Cache_Lite 1.7.2
    طريقة الاستخدا PEAR::Cache_Lite - Example

    الفكره هي.
    ان تقرر او تحاول ان تخمن المده الزمنيه بين كل تحديث لقاعده البيانت .. اذا كانت التحديث كل 3 ساعات تقريبا، فلماذا تذهب لقاعده البيانات على كل زياره .. لماذا لا تضع النتائج في ملف نصي .. والملف النصي ينتهي صلاحيته تقريبا كل 3 ساعلت، وبعد كل 3 ساعات يتم خلقك ملف نصي جديد من نتائج الاستعلام. فاذا لم ينتهي صلاحيه الملف .. فقم فقط بإظار محتوى ذالك الملف .. وهذا اسرع بكثير من استعلام واحد لقاعده البيانات لانك كما تعلم .. في هذه الزمن .. القرص الصلب ممكن ا يقذف ما يقارب ال50 ميجا في الثانيه ..!!





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    42


    السلام عليكم ورحمه الله وبركاته
    قم بعمل جدول يحتوى على الاقسام وجدول اخر يحتوى على المقالات
    وقم بعمل حقل ربط بينهم وليكن sections_id
    واستعلم عن ما تريد من خلال left join او right join او inner join على حسب حاجتك

    كود PHP:
    SELECT 
    FROM sections_makal
    LEFT JOIN makal ON sections_makal
    .sections_id makal.sections_id
    ORDER BY makal
    .date
    LIMIT 10 






    __________________
    "لا تزولُ قَدَمَا عَبْدٍ يومَ القيامةِ حتى يُسألَ عنْ أربع ٍ عنْ عُمُرِهِ فيما أفناهُ وعنْ جسدِه فيما أبْلاهُ وعنْ مالهِ مِنْ أيْنَ أخذهُ وفيما أنْفَقَهُ وعنْ عِلمِهِ ماذا عَمِلَ بهِ".

  10. #10
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


    اشكر كل من شارك فى هذا الموضوع

    hilaby شكرآ لك طريقتك أفضل حل










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

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