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

الموضوع: أريد أستعلام واحد يعمل count لعدة جداول . هل لم أجد حل زى كل مرة

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

    أريد أستعلام واحد يعمل count لعدة جداول . هل لم أجد حل زى كل مرة



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

    أخوانى أنا أبحث من مدة عن أستعلام واحد يعمل count لعدة جداول

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

    وهذة الجداول

    كود PHP:
     
    table 
    -> user
     
    id
      
    name
     
    -----
     
    table -> articles
     
    id
      
    name
     
    -----
     
    table -> comment
     
    id
      
    name 
    وانا كنت عامل 3 استعلامات

    كود PHP:
    $sql_a mysql_query('select conut(*) from user ');
     
    $sql_b mysql_query('select conut(*) from article ');
     
    $sql_c mysql_query('select conut(*) from comment'); 
    أريدهم يدخلوا فى أستعلام واحد هل يوجد حل







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


    وجدت حل من خلال صديق على الماسنجر وهو بأستخدام union
    كود PHP:
     
    $sql 
    mysql_query("select count(*) from aricle 
       UNION 
       select count(*) from user
       UNION   select count(*) from comment"

    لاكن حظرنى منوا وقلى يعمل حمل على mysql
    وأنا حاليآ فى أنتظار ردودكم





    التعديل الأخير تم بواسطة tech ; 15-11-2008 الساعة 05:43 PM

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    تستطيع عملها عن طريق:
    كود PHP:
    select count(t1.*),count(t2.*) from t1,t2 
    كما يمكن أيضا استخدام left join ‎‏ أو union





    التعديل الأخير تم بواسطة مهندس مصرى ; 15-11-2008 الساعة 10:31 PM

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


    السلام عليكم

    أخى مهندس مصرى المثال الى كتبتوا مش شغال لاكن أنا جربت هذا وطلع النتائج دى
    كود PHP:
    select count(user.id),count(article.idfrom user,article 
    ودى النتائج

    كود PHP:
    Array
    (
        [
    count(members.id)] => 40
        
    [count(photos_categories.id)] => 40

    + ان النتائج الى طلع غير سليمة خالص

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

    وممكن تكتبلى مثال باستخدام طريقة left join يكون شغال





    التعديل الأخير تم بواسطة tech ; 15-11-2008 الساعة 11:38 PM

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    هل تنفع معك هذا ؟

    كود PHP:
    $tables mysql_list_tables($db);
    $db_rows 0;
    while (
    $table mysql_fetch_row($tables))
    {
    $r mysql_query("SELECT COUNT(*) FROM $table[0]");
    $db_rows += mysql_result($r0);
    }
    echo 
    "Total rows: $db_rows"






    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

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


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

    أولآ مشكور أخى سحاب اون لاين

    الهدف من عمل استعلام واحد هو تخفيف الحمل من السيرفر ويكون الأداء جيد وبالنسبة لهذا الكود فسيعمل count لكل الجداول .

    ومازلت بأنتظار الحل






  7. #7


    لتخفيف الحمل قم بعمل طريقة أخري تماماً

    1 - جدول جديد في السكربت وليكن إسمه state
    2- يكون فيه خانة لليوزر تزيد واحد كلما سجل عضو ويقل واحد كلما حذفت عضو
    3- حقل للمقالات يزيد واحد كلما أضفت مقالة ويقل واحد كلما حذفت مقاله
    4- حقل للتعليقات يزيد 1 كلما أضيف تعليق ويقل واحد كلما حذف تعليق

    وتجلب كل البيانات جلة واحدة فقط من الجدولة ولمرة واحدة ( يمكنك عمل حقول أخري مثلا لعدد مرات التصفح إلخ بنفس الطريقة )

    سؤال : ماذا سأفعل لو حذفت بيان من داخل ال phpmyadmin يدوياً ؟
    جواب : أضف لبرمجيتك نظام تحديث العدادات بالضغط عليه يتم ما ذكربت بالأعلي ويحدث البيانات في الجدول الجديد





    __________________
    السيف أصدق أنباء من الكتب

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


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

    أخى المجروح أنا فكرت بعمل ذلك . لاكن لقيت أن عمل أستعلام واحد أسهل من كل ذلك . مشكور لمحاولتك مساعدتى

    ومازلت منتظر الحل من خبراء mysql






  9. #9
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


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





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

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


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

    أخى سحاب اون لاين البرنامج يحدث لة تعديل فى القاعدة بأستمرار فا مش ينفع فى هذة الحالة استخدام الكاش + أنا الأستعلام الى أريدوا من السهل عملوا.

    ومازلت بأنتظار الحل






  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    320


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





    __________________
    إلى اللقاء سوالف , وآسف على الإزعاج...
    moffed.com , kleeja.com/tour/ar ,phpbbarabia.com



  12. كود PHP:

    mysql_query
    ('SELECT (SELECT count( * ) FROM user ) + ( SELECT count( * ) FROM article) + ( SELECT count( * ) FROM comment)'); 






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

  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    السلام عليكم

    أخى مهندس مصرى المثال الى كتبتوا مش شغال لاكن أنا جربت هذا وطلع النتائج دى
    كود PHP:
    select count(user.id),count(article.idfrom user,article 
    ودى النتائج

    كود PHP:
    Array
    (
        [
    count(members.id)] => 40
        
    [count(photos_categories.id)] => 40

    + ان النتائج الى طلع غير سليمة خالص

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

    وممكن تكتبلى مثال باستخدام طريقة left join يكون شغال
    كود PHP:
    select count(user.id) as user_count ,count(article.id) as article_count from user,article 
    وتستدعيها بالاسماء
    user_count
    article_count
    ولا تنسى ال
    group by

    هذا أفضل حل لك
    اذا اردت استخدام ال left join يجب ان يكون هناك علاقات بين هذه الجداول التي تستدعيها لانك ستضع شرط للربط في on





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

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


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

    saanina : يحدث تحديث مستمر فى القاعدة مثل ماذكرت فلذلك الحل الصحيح هو الأستعلام
    hilaby : مشكور حلك صحيح 100%

    مهندس مصرى : النتائج غير سليمة

    كود PHP:
    Array
    (
        [
    user_count] => 125
        
    [article_count] => 125

    وأفضل حل توصلت الية حل hilaby

    كود PHP:

    select 
        
    (select count(*) from user),
        (
    select count(*) from article
    وشكرآ لك من شارك فى الموضوع










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

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

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