За последние 24 часа нас посетили 16968 программистов и 1652 робота. Сейчас ищут 982 программиста ...

Select count() - как оптимизировать запрос

Тема в разделе "Вопросы от блондинок", создана пользователем CabanCHO, 23 апр 2010.

  1. CabanCHO

    CabanCHO Активный пользователь

    С нами с:
    23 апр 2010
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Гагарин, Смоленская обл.
    Доброго времени суток!
    Помогите новичку. У меня такой скрипт:

    Код (Text):
    1.  
    2. $sql_count1=mysql_query("Select count(*) FROM client");
    3. $count1=mysql_result($sql_count1,0);
    4. echo "&nbsp;&nbsp;&nbsp;<a href=&quot;all.php&quot;>Всего предложений:</a> <b>$count1</b><br>";
    5. echo "<i>&nbsp;&nbsp;&nbsp;По регионам:<br></i>";
    6. $sql_count2=mysql_query("Select count(*) FROM client WHERE locationID=1");
    7. $count2=mysql_result($sql_count2,0);
    8. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;gag.php&quot;>В Гагаринском районе:</a> <b>$count2</b><br>";
    9. $sql_count3=mysql_query("Select count(*) FROM client WHERE locationID=2");
    10. $count3=mysql_result($sql_count3,0);
    11. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;vyaz.php&quot;>В Вяземском районе:</a> <b>$count3</b><br>";
    12. $sql_count4=mysql_query("Select count(*) FROM client WHERE locationID=3");
    13. $count4=mysql_result($sql_count4,0);
    14. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;novd.php&quot;>В Новодугинском районе:</a> <b>$count4</b><br>";
    15. $sql_count5=mysql_query("Select count(*) FROM client WHERE locationID=4");
    16. $count5=mysql_result($sql_count5,0);
    17. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;sich.php&quot;>В Сычевском районе:</a> <b>$count5</b><br>";
    18. $sql_count6=mysql_query("Select count(*) FROM client WHERE locationID=5");
    19. $count6=mysql_result($sql_count6,0);
    20. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;tem.php&quot;>В Темкинском районе:</a> <b>$count6</b><br>";
    21. $sql_count7=mysql_query("Select count(*) FROM client WHERE locationID=6");
    22. $count7=mysql_result($sql_count7,0);
    23. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=&quot;ugr.php&quot;>В Угранском районе:</a> <b>$count7</b><br>";
    Есть ли способ оптимизировать? А то у меня еще группируется по другим признакам не только по региону :о)
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    SELECT COUNT(*) FROM `client` UNION ALL SELECT COUNT(*) FROM `client` WHERE `locationID` = 2 UNION ALL SELECT COUNT(*) FROM `clent` WHERE `locationID` = 2 .....
    И через mysql_result выводить нужное значение, указав какое нужно. Пример - echo mysql_result($any,1)
    Хотя, скорей всего найдется более шустрый вариант запроса.

    Кстати, мой вариант на случай, если у вас не особо много этих locationID будет всего, иначе лажа) Уж лучше в цикле как по мне тогда.
     
  3. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Мдя....
    SELECT locationID, COUNT(*) FROM client GROUP BY locationID
     
  4. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    MiksIr + 1.

    Хочется заметить также, что если Вам принципиально получение и общего количества и количества по каждому столбцу в один запрос, можно использовать модификатор WITH ROLLUP:

    [sql]
    SELECT `locationID`, COUNT(*) AS `count`
    FROM `client`
    GROUP BY `locationID` WITH ROLLUP;
    [/sql]
     
  5. CabanCHO

    CabanCHO Активный пользователь

    С нами с:
    23 апр 2010
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Гагарин, Смоленская обл.
    Большое всем спасибо за ответы. А не подскажете тогда как из запроса данные взять?
     
  6. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    В блондинки!