За последние 24 часа нас посетили 20230 программистов и 1706 роботов. Сейчас ищут 1963 программиста ...

запросец

Тема в разделе "PHP и базы данных", создана пользователем Апельсин, 13 июн 2010.

  1. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Есть две таблицы - servers и uptime;
    С первой все понятно - по записи на сервак.
    В табле uptime куча записей, на каждый сервак может быть по сотне штук. Там записывается ид сервера и статус (1- вкл, 0 - выкл).
    Нужно чтоб нижеприведенный запрос выбирал с табли uptime разницу между всеми записями со статусом 1 и записями со статусом 0. (То есть - найти все, в которых ид серва = 5. Имеем, например, всего 15 штук - 10 со статусом 1, и 5 со статусом 0.). Потом вычесть процент аптайма серва (10 / 15 * 100).
    И вот нужно чтоб вытягивалось это значение аптайма для каждого серва.

    Есть такой запрос (where сократил):
    [sql]SELECT * FROM `servers` WHERE `game` = '1' [/sql]

    Полагаю, через COUNT + JOIN надо выруливать, но в кучу не могу собрать.
    Самбадихелми ))
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Ну, значит, не судьба...
     
  3. Einbaukueche

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

    С нами с:
    14 апр 2010
    Сообщения:
    34
    Симпатии:
    0
    Адрес:
    Там, где много гор и пива.
    А банальный подход не тянет?

    Код (Text):
    1.  
    2. mysql> select * from servers;
    3. +----------+------------------+
    4. | serverid | servername       |
    5. +----------+------------------+
    6. |        1 | Average server   |
    7. |        2 | Excellent server |
    8. |        3 | Plugged off      |
    9. +----------+------------------+
    10. 3 rows in set (0.00 sec)
    11.  
    12. mysql> select * from uptime;
    13. +----------+--------+---------------------+
    14. | serverid | status | ts                  |
    15. +----------+--------+---------------------+
    16. |        1 |      1 | 2010-06-13 22:39:15 |
    17. |        1 |      0 | 2010-06-13 22:39:20 |
    18. |        1 |      0 | 2010-06-13 22:39:24 |
    19. |        1 |      0 | 2010-06-13 22:39:24 |
    20. |        1 |      0 | 2010-06-13 22:39:24 |
    21. |        1 |      0 | 2010-06-13 22:39:25 |
    22. |        1 |      0 | 2010-06-13 22:39:25 |
    23. |        1 |      0 | 2010-06-13 22:39:25 |
    24. |        1 |      0 | 2010-06-13 22:39:25 |
    25. |        1 |      0 | 2010-06-13 22:39:26 |
    26. |        1 |      0 | 2010-06-13 22:39:26 |
    27. |        1 |      0 | 2010-06-13 22:39:26 |
    28. |        1 |      0 | 2010-06-13 22:39:27 |
    29. |        1 |      1 | 2010-06-13 22:39:30 |
    30. |        1 |      1 | 2010-06-13 22:39:31 |
    31. |        1 |      1 | 2010-06-13 22:39:31 |
    32. |        1 |      1 | 2010-06-13 22:39:31 |
    33. |        1 |      1 | 2010-06-13 22:39:31 |
    34. |        1 |      1 | 2010-06-13 22:39:32 |
    35. |        2 |      1 | 2010-06-13 22:39:37 |
    36. |        2 |      1 | 2010-06-13 22:39:37 |
    37. |        2 |      1 | 2010-06-13 22:39:37 |
    38. |        2 |      1 | 2010-06-13 22:39:37 |
    39. |        2 |      1 | 2010-06-13 22:39:38 |
    40. |        2 |      1 | 2010-06-13 22:39:38 |
    41. |        2 |      1 | 2010-06-13 22:39:38 |
    42. |        2 |      1 | 2010-06-13 22:39:38 |
    43. |        2 |      1 | 2010-06-13 22:39:39 |
    44. |        2 |      1 | 2010-06-13 22:39:39 |
    45. |        3 |      0 | 2010-06-13 22:39:46 |
    46. |        3 |      0 | 2010-06-13 22:39:47 |
    47. |        3 |      0 | 2010-06-13 22:39:47 |
    48. |        3 |      0 | 2010-06-13 22:39:47 |
    49. |        3 |      0 | 2010-06-13 22:39:47 |
    50. |        3 |      0 | 2010-06-13 22:39:48 |
    51. |        3 |      0 | 2010-06-13 22:39:48 |
    52. +----------+--------+---------------------+
    53. 36 rows in set (0.00 sec)
    54.  
    55. mysql> select servername, sum(status)/count(status) as uptime_perc
    56.     -> from uptime
    57.     -> join servers using(serverid)
    58.     -> group by serverid;
    59. +------------------+-------------+
    60. | servername       | uptime_perc |
    61. +------------------+-------------+
    62. | Average server   |      0.3684 |
    63. | Excellent server |      1.0000 |
    64. | Plugged off      |      0.0000 |
    65. +------------------+-------------+
    66. 3 rows in set (0.00 sec)
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Einbaukueche
    Чуток позже гляну в действии. Спс.