نمایش نتایج 1 تا 10 از 10

نام تاپیک: درخواست کوئری برای نمایش بیشترین رکورد در بانک

  1. #1
    کاربر دائمی آواتار yasgig
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اردبیل
    سن
    33
    پست
    534

    درخواست کوئری برای نمایش بیشترین رکورد در بانک

    با سلام
    من توی سیستم وبلاگ دهی می خوام 5 وبلاگی که بیشترین پست رو دارند نمایش بدم.من یک table دارم با نام posts که توی اون پست های کلیه کاربران ذخیره میشه.توی هر رکورد نام وبلاگ به طور مثال ali،عنوان پست و محتوای پست ذخیره میشه.حالا می خوام بدونم کدوم وبلاگ بیشترین پست رو داره تا به عنوان وبلاگ برتر معرفی کنم.از دوستان می خواستم بپرسم کوئری این چجوری میشه.در ضمن بانک اطلاعات mysql هست.
    با تشکر

  2. #2

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    SELECT blogname,count(postid) AS p FROM posts GROUP BY blogname ORDER BY  p

  3. #3
    کاربر دائمی آواتار ghasemweb
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    608

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    البته كه راههاي بيشماري هست ولي به نظر من معقولش اين هست كه شما يك جدول براي شمارش تعداد پست ها داشته باشيد براي مثال وبلاگ ali تعداد پست هاش n تا هست و در هر نوبت درج پست و حذف يك مقدار به است فيلد كم يا زياد كن.

  4. #4
    کاربر دائمی آواتار maysam.m
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    پست
    400

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    سلام

    فکر کنم با دستور max در mysql بشود همچین کاری کرد:
    http://www.tizag.com/mysqlTutorial/mysqlmax.php

  5. #5
    کاربر دائمی آواتار yasgig
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اردبیل
    سن
    33
    پست
    534

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    SELECT blogname,count(postid) AS p FROM posts GROUP BY blogname ORDER BY p
    ممنون از همه دوستان.کد بالا کار نکرد.
    البته كه راههاي بيشماري هست ولي به نظر من معقولش اين هست كه شما يك جدول براي شمارش تعداد پست ها داشته باشيد براي مثال وبلاگ ali تعداد پست هاش n تا هست و در هر نوبت درج پست و حذف يك مقدار به است فيلد كم يا زياد كن.
    درسته بهترین راه همینه ولی دیگه کار از کار گذشته.تعداد کاربرا خیلی زیاده و اگه این کارو بکنم کاربرای قبلی پستشون صفر نشون داده میشه.
    فکر کنم با دستور max در mysql بشود همچین کاری کرد:
    اولش خودم با همین روشی که شما میگید کار میکردم ولی رکورد رو اشتباه نشون میداد:
    SELECT *, MAX(weblog) FROM posts group by weblog order by weblog desc limit 5

    ساختار جدول posts به این صورته:
    CREATE TABLE IF NOT EXISTS `posts` (
    `id` int(11) NOT NULL auto_increment,
    `bid` int(11) NOT NULL default '0',
    `usern` text collate latin1_general_ci NOT NULL,
    `weblog` text collate latin1_general_ci NOT NULL,
    `ptitle` text collate latin1_general_ci NOT NULL,
    `pkeys` text collate latin1_general_ci NOT NULL,
    `ptext` text collate latin1_general_ci NOT NULL,
    `pextext` text collate latin1_general_ci NOT NULL,
    `pcomment` text collate latin1_general_ci NOT NULL,
    `pcat` text collate latin1_general_ci NOT NULL,
    `ptime` text collate latin1_general_ci NOT NULL,
    `pdate` text collate latin1_general_ci NOT NULL,
    `ppas` text collate latin1_general_ci NOT NULL,
    `ppasm` text collate latin1_general_ci NOT NULL,
    `phits` int(11) NOT NULL default '0',
    `votea` int(11) NOT NULL,
    `voteb` int(11) NOT NULL,
    `status` text collate latin1_general_ci NOT NULL,
    `ptags` text collate latin1_general_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2877 ;

    از دوستان کسی میتونه واسم ویرایش کنه؟

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    تهران
    پست
    147

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    نقل قول نوشته شده توسط yasgig مشاهده تاپیک
    ممنون از همه دوستان.کد بالا کار نکرد.

    درسته بهترین راه همینه ولی دیگه کار از کار گذشته.تعداد کاربرا خیلی زیاده و اگه این کارو بکنم کاربرای قبلی پستشون صفر نشون داده میشه.

    اولش خودم با همین روشی که شما میگید کار میکردم ولی رکورد رو اشتباه نشون میداد:
    SELECT *, MAX(weblog) FROM posts group by weblog order by weblog desc limit 5

    ساختار جدول posts به این صورته:
    CREATE TABLE IF NOT EXISTS `posts` (
    `id` int(11) NOT NULL auto_increment,
    `bid` int(11) NOT NULL default '0',
    `usern` text collate latin1_general_ci NOT NULL,
    `weblog` text collate latin1_general_ci NOT NULL,
    `ptitle` text collate latin1_general_ci NOT NULL,
    `pkeys` text collate latin1_general_ci NOT NULL,
    `ptext` text collate latin1_general_ci NOT NULL,
    `pextext` text collate latin1_general_ci NOT NULL,
    `pcomment` text collate latin1_general_ci NOT NULL,
    `pcat` text collate latin1_general_ci NOT NULL,
    `ptime` text collate latin1_general_ci NOT NULL,
    `pdate` text collate latin1_general_ci NOT NULL,
    `ppas` text collate latin1_general_ci NOT NULL,
    `ppasm` text collate latin1_general_ci NOT NULL,
    `phits` int(11) NOT NULL default '0',
    `votea` int(11) NOT NULL,
    `voteb` int(11) NOT NULL,
    `status` text collate latin1_general_ci NOT NULL,
    `ptags` text collate latin1_general_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2877 ;

    از دوستان کسی میتونه واسم ویرایش کنه؟
    شما می دونی فیلد bid و usern چیه؟
    چرا این کوئری کار نکرد، مشکلش چی بود؟
    SELECT blogname,count(postid) AS p FROM posts GROUP BY blogname ORDER BY p

  7. #7
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    یزد
    پست
    727

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک


  8. #8
    کاربر دائمی آواتار ghasemweb
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    608

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    نقل قول نوشته شده توسط Vahid Faraji مشاهده تاپیک
    شما می دونی فیلد bid و usern چیه؟
    چرا این کوئری کار نکرد، مشکلش چی بود؟
    SELECT blogname,count(postid) AS p FROM posts GROUP BY blogname ORDER BY p
    من هم با شما موافقم اين كوئري احتمالا بايد جواب بده. من هم يك جدول ثبت سفارش براي سيستم فروشگاه دارم كه كد كالا و تعدادي فيلد ديگه داره كه من هم مشكلي مشابه دوستمون دارم ، من ميخوام كه تو سايتم 10 كالاي پر فروش رو نمايش بدم و فكر ميكنم كه اين كد جواب كار من رو بده. البته بايد تستش كنم.

  9. #9
    کاربر دائمی آواتار yasgig
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اردبیل
    سن
    33
    پست
    534

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    شما می دونی فیلد bid و usern چیه؟
    ممنون از همه دوستان.bid شماره پست کاربرها هست.مثلا پست 23 و ...فکر کنم بر اساس این بشه کاری کرد.
    من ميخوام كه تو سايتم 10 كالاي پر فروش رو نمايش بدم و فكر ميكنم كه اين كد جواب كار من رو بده.
    شاید واسه شما کار بده در صورتی که فیلدتون عدد باشه.مشکل اینجاست که فیلد من char هست.

  10. #10
    کاربر دائمی آواتار yasgig
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اردبیل
    سن
    33
    پست
    534

    نقل قول: درخواست کوئری برای نمایش بیشترین رکورد در بانک

    آخرش بعد از کلی مکافات تونستم یه کوئری بگیرم ولی تعداد دستور هام خیلی زیاده.
    <?php
    $sql1 = "SELECT *, MAX(bid) FROM posts group by bid order by bid desc";
    $result1 = mysql_query($sql1) or die(mysql_error());
    $R1 = mysql_fetch_array($result1);
    $num1 = mysql_num_rows($result1);
    $sqla1 = "SELECT * FROM blogs where usern = '$R1[weblog]'";
    $resulta1 = mysql_query($sqla1) or die(mysql_error());
    $z1 = mysql_fetch_array($resulta1);
    //end query 1
    $sql2 = "SELECT *, MAX(bid) FROM posts where weblog != '$R1[weblog]' group by bid order by bid desc";
    $result2 = mysql_query($sql2) or die(mysql_error());
    $R2 = mysql_fetch_array($result2);
    $num2 = mysql_num_rows($result2);
    $sqla2 = "SELECT * FROM blogs where usern = '$R2[weblog]'";
    $resulta2 = mysql_query($sqla2) or die(mysql_error());
    $z2 = mysql_fetch_array($resulta2);
    //end query 2
    $sql3 = "SELECT *, MAX(bid) FROM posts where weblog != '$R1[weblog]' && weblog != '$R2[weblog]' group by bid order by bid desc";
    $result3 = mysql_query($sql3) or die(mysql_error());
    $R3 = mysql_fetch_array($result3);
    $num3 = mysql_num_rows($result3);
    $sqla3 = "SELECT * FROM blogs where usern = '$R3[weblog]'";
    $resulta3 = mysql_query($sqla3) or die(mysql_error());
    $z3 = mysql_fetch_array($resulta3);
    //end query 3
    $sql4 = "SELECT *, MAX(bid) FROM posts where weblog != '$R1[weblog]' && weblog != '$R2[weblog]' && weblog != '$R3[weblog]' group by bid order by bid desc";
    $result4 = mysql_query($sql4) or die(mysql_error());
    $R4 = mysql_fetch_array($result4);
    $num4 = mysql_num_rows($result4);
    $sqla4 = "SELECT * FROM blogs where usern = '$R4[weblog]'";
    $resulta4 = mysql_query($sqla4) or die(mysql_error());
    $z4 = mysql_fetch_array($resulta4);
    //end query 4
    $sql5 = "SELECT *, MAX(bid) FROM posts where weblog != '$R1[weblog]' && weblog != '$R2[weblog]' && weblog != '$R3[weblog]' && weblog != '$R4[weblog]' group by bid order by bid desc";
    $result5 = mysql_query($sql5) or die(mysql_error());
    $R5 = mysql_fetch_array($result5);
    $num5 = mysql_num_rows($result5);
    $sqla5 = "SELECT * FROM blogs where usern = '$R5[weblog]'";
    $resulta5 = mysql_query($sqla5) or die(mysql_error());
    $z5 = mysql_fetch_array($resulta5);
    //end query 5
    echo "<b style=color:green>&raquo;</b>&nbsp;<a href=http://$R1[weblog].yasgig.ir target=_blank>$z1[btitle]</a>(تعداد پست:$num1)<br>";
    echo "<b style=color:green>&raquo;</b>&nbsp;<a href=http://$R2[weblog].yasgig.ir target=_blank>$z2[btitle]</a>(تعداد پست:$num2)<br>";
    echo "<b style=color:green>&raquo;</b>&nbsp;<a href=http://$R3[weblog].yasgig.ir target=_blank>$z3[btitle]</a>(تعداد پست:$num3)<br>";
    echo "<b style=color:green>&raquo;</b>&nbsp;<a href=http://$R4[weblog].yasgig.ir target=_blank>$z4[btitle]</a>(تعداد پست:$num4)<br>";
    echo "<b style=color:green>&raquo;</b>&nbsp;<a href=http://$R5[weblog].yasgig.ir target=_blank>$z5[btitle]</a>(تعداد پست:$num5)<br>";
    ?>

    مثلا اینکه دیگه چاره ای نیست و باید از این استفاده کنم.
    اینم نمونه
    http://yasgig.ir/blog

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •