Запрос на группировку по 2 полям и объединением таблиц

Тема в разделе "Базы данных", создана пользователем Qwest-fx, 18 мар 2012.

Модераторы: latteo
  1. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Есть примерно такой запрос

    PHP:
    select sum(tb_nach.vidsum) as Суммаcount(tb_nach.mes) as 'кол.во нач.'spr_work.fio,tb_nach.god from tb_nach
    inner join tb_approval on 
    (tb_nach.tab tb_approval.tab )
    inner join spr_work on (tb_approval.idfio spr_work.id )
    group by tb_nach.tabtb_nach.god
    having tb_nach
    .god year(CURRENT_DATE) or tb_nach.god year(CURRENT_DATE)-1
    Но он не совсем верный, т.к. хочется применить группировку по диапозону, т.е. чтобы группировка прошла по 2 годам. например 2011-2012 чтобы применить агрегатную функцию sum

    Вывод запроса.
    [​IMG]
    если конечно такое возможно
     
  2. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    возможно не до конца понял суть вопроса, но по моему так:
    PHP:
    select sum(tb_nach.vidsum) as Суммаcount(tb_nach.mes) as 'кол.во нач.'spr_work.fio,tb_nach.god from tb_nach
    inner join tb_approval on 
    (tb_nach.tab tb_approval.tab )
    inner join spr_work on (tb_approval.idfio spr_work.id )

    where tb_nach.god in (20112012)
    group by tb_nach.tab
     
  3. baddavil

    baddavil Создатель

    Регистр.:
    14 мар 2012
    Сообщения:
    25
    Симпатии:
    1
    Даст ошибку. Т.к. поля spr_work.fio, tb_nach.god не участвуют в группировке, в них по 2 значения и к ним не применили агрегат.
    Что бы не получить ошибку надо хотя бы
    PHP:
    select sum(tb_nach.vidsum) as Суммаcount(tb_nach.mes) as 'кол.во нач.'max(spr_work.fio),max(tb_nach.godfrom tb_nach
    Но это неправильно из-за сути полученных данных!
     
  4. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    я в первые 3 строчки не вникал. сейчас глянул - у ТС в select есть spr_work.fio, а в группировке он не участвует - странно.

    если у него так работает, то тогда мой вариант остается прежним, только из первой строки надо убрать tb_nach.god
     
  5. baddavil

    baddavil Создатель

    Регистр.:
    14 мар 2012
    Сообщения:
    25
    Симпатии:
    1
    Да, там видимо tb_nach.tab - это табельный номер, и это по нему идет группировка. Тогда осталось только убрать tb_nach.god ))