Помогите с запросом Sql

Discussion in 'PHP' started by andrey_a87, 16 Apr 2008.

  1. andrey_a87

    andrey_a87 Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    108
    Likes Received:
    1
    Reputations:
    -1
    Есть запрос
    SELECT DISTINCT
    sum(c.HourWeight),
    c.HourWeight,
    u.UserLogin,
    ppersons.Fathername,
    ppersons.Name,
    ppersons.Surname,
    ppersons.Email,
    ppersons.RoadName,
    c.CourseName
    FROM
    stat_tests s
    INNER JOIN users u ON (s.UserID = u.UserID)
    INNER JOIN ppersons ON (u.UserLink = ppersons.PPersonID)
    INNER JOIN courses c ON (s.TestID = c.CourseID)
    WHERE
    (s.StatTestResult > 0.75)
    GROUP BY
    u.UserLogin,
    ppersons.Fathername,
    ppersons.Name,
    ppersons.Surname,
    ppersons.Email,
    c.CourseName


    Выдётся в виде

    sum(c.HourWeight) HourWeight UserLogin Fathername Name Surname Email RoadName CourseName
    36,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Актуальность проблемы защиты информации. Основные понятия, термины и определения в области защиты информации
    36,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Ведение делопроизводства документов, содержащих информацию, составляющую коммерческую тайну ОАО «РЖД».
    54,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Законодательная и нормативная база правового регулирования вопросов защиты информации, составляющей коммерческую тайну
    9,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Контроль за соблюдением режима коммерческой тайны
    36,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Организация доступа к информационным ресурсам ОАО «РЖД».
    18,000 9 USER118 Кузьмин Виктор Николаевич nodskisp@chel.surw.mps ЮУРЦБ Основные положения по защите информации при обработке ее на средствах вычислительной техники.

    а мне нужно чтобы он просто просумировал эти девятки,я так понимаю что функция sum не работает вместе с Distinct т,к если убать GROUP BY по c.CourseName ,т он выдёт сумму равную 181 помойму...но должно быть 54
     
  2. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Нет, ты неправильно понял :) Просто если не используется Group BY - то либо используются ТОЛЬКО агрегатные функции (как то sum, max, avg и тп), либо они вообще не используются.