За последние 24 часа нас посетили 18294 программиста и 1634 робота. Сейчас ищут 1690 программистов ...

Выборка значений за различный период времени одним запросом

Тема в разделе "MySQL", создана пользователем energy2008, 1 мар 2010.

  1. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    нужно осуществить выборку из таблицы сумм значений За вчера, За январь, За 2009.

    можно ли осуществить это одним запросом?
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Используйте join или union
     
  3. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    С помощью JOIN как это можно реализовать?
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Ну для начала можно попробовать тупо в лоб:
    [sql](select за вчера) join (select за январь) join (select за 2009)[/sql]
    Если не получится (в чем я уверен чуть менее чем полностью, но mysql не перестает меня удивлять своими возможностями =)) ), то можно обернуть это в select. А там уж по обстоятельствам.
     
  5. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    energy2008
    если найдете как - напишите сюда.
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  7. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    (SELECT sstat_value FROM global_sites_stat WHERE sstat_date = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) UNION
    (SELECT SUM(sstat_value) FROM global_sites_stat WHERE MONTH(sstat_date) = MONTH(DATE_SUB(NOW(), INTERVAL 1 MONTH)) GROUP BY sstat_siteid ) UNION
    (SELECT SUM(sstat_value) FROM global_sites_stat WHERE YEAR(sstat_date) = YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sstat_siteid)

    Это с помощью UNION. На выходе 2хмерный массив из 27 значений (по 3 для каждого из 9 сайтов). Сейчас буду думать как получить трехмерный массив.
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    energy2008
    покажите пожалуйста что у вас var_dump() показывает на такой запрос
    если его через mysql_fetch_array прогнать
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Аемне... mysql_query такое может?
     
  10. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    SELECT * FROM (SELECT sstat_value as sday, sstat_siteid FROM global_sites_stat WHERE sstat_date = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as tableday,
    (SELECT SUM(sstat_value) as smonth, sstat_siteid FROM global_sites_stat WHERE MONTH(sstat_date) = MONTH(DATE_SUB(NOW(), INTERVAL 1 MONTH)) GROUP BY sstat_siteid ) as tablemonth,
    (SELECT SUM(sstat_value) as syear, sstat_siteid FROM global_sites_stat WHERE YEAR(sstat_date) = YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sstat_siteid) as tableyear
    WHERE tableday.sstat_siteid = tablemonth.sstat_siteid AND tableyear.sstat_siteid = tableday.sstat_siteid


    Результат:
    Array
    (
    [0] => Array
    (
    [0] => 157
    [sday] => 157
    [1] => 1
    [sstat_siteid] => 1
    [2] => 4752
    [smonth] => 4752
    [3] => 1
    [4] => 10688
    [syear] => 10688
    [5] => 1
    )

    [1] => Array
    (
    [0] => 301
    [sday] => 301
    [1] => 2
    [sstat_siteid] => 2
    [2] => 7532
    [smonth] => 7532
    [3] => 2
    [4] => 17042
    [syear] => 17042
    [5] => 2
    )

    [2] => Array
    (
    [0] => 167
    [sday] => 167
    [1] => 3
    [sstat_siteid] => 3
    [2] => 5283
    [smonth] => 5283
    [3] => 3
    [4] => 12029
    [syear] => 12029
    [5] => 3
    )

    [3] => Array
    (
    [0] => 239
    [sday] => 239
    [1] => 4
    [sstat_siteid] => 4
    [2] => 7590
    [smonth] => 7590
    [3] => 4
    [4] => 17287
    [syear] => 17287
    [5] => 4
    )

    [4] => Array
    (
    [0] => 183
    [sday] => 183
    [1] => 5
    [sstat_siteid] => 5
    [2] => 6615
    [smonth] => 6615
    [3] => 5
    [4] => 13530
    [syear] => 13530
    [5] => 5
    )

    [5] => Array
    (
    [0] => 355
    [sday] => 355
    [1] => 6
    [sstat_siteid] => 6
    [2] => 10485
    [smonth] => 10485
    [3] => 6
    [4] => 22575
    [syear] => 22575
    [5] => 6
    )

    [6] => Array
    (
    [0] => 321
    [sday] => 321
    [1] => 7
    [sstat_siteid] => 7
    [2] => 9369
    [smonth] => 9369
    [3] => 7
    [4] => 20186
    [syear] => 20186
    [5] => 7
    )

    [7] => Array
    (
    [0] => 48
    [sday] => 48
    [1] => 8
    [sstat_siteid] => 8
    [2] => 2206
    [smonth] => 2206
    [3] => 8
    [4] => 4047
    [syear] => 4047
    [5] => 8
    )

    [8] => Array
    (
    [0] => 107
    [sday] => 107
    [1] => 9
    [sstat_siteid] => 9
    [2] => 3707
    [smonth] => 3707
    [3] => 9
    [4] => 8487
    [syear] => 8487
    [5] => 9
    )

    )
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    energy2008
    красота)