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

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

  1. andrey_a87

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

    Joined:
    2 Mar 2008
    Messages:
    108
    Likes Received:
    1
    Reputations:
    -1
    SELECT DISTINCT
    users.UserLogin,
    users.UserPassword,
    ppersons.Surname,
    ppersons.Name,
    ppersons.Fathername,
    ppersons.RoadName,
    stat_tests.TestID,
    courses.HourWeight
    FROM
    users
    INNER JOIN ppersons ON (users.UserLink = ppersons.PPersonID)
    INNER JOIN stat_tests ON (users.UserID = stat_tests.UserID)
    INNER JOIN courses ON (stat_tests.TestID = courses.CourseID)
    WHERE
    (stat_tests.StatTestResult >= '0,75')



    Есть запрос,он выводит результаты следующим образом
    UserLogin UserPassword Surname Name Fathername RoadName TestID HourWeight
    administrator 101 Владимирович Сергей Егоров Главная дорога 220 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 213 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 215 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 214 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 212 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 211 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 210 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 219 9
    USER10 OPAP5N Евгеньевна Галина Мунц КуйбРЦБ 213 9
    USER10 OPAP5N Евгеньевна Галина Мунц КуйбРЦБ 211 9
    USER10 OPAP5N Евгеньевна Галина Мунц КуйбРЦБ 210 9
    USER10 OPAP5N Евгеньевна Галина Мунц КуйбРЦБ 220 9

    хотелось бы чтобы он подсчитывал кол-во записей в таблице HourWeight, но если я делаю sum(HourWeight) а потом group by userlogin то он бред выводит...(не правдивые данные)
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    PHP:
    $res mysql_query("SELECT `courses.HourWeight` FROM `users`");
    $row mysql_num_rows($res);
    echo 
    $row
     
  3. andrey_a87

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

    Joined:
    2 Mar 2008
    Messages:
    108
    Likes Received:
    1
    Reputations:
    -1
    Вы меня не поняли по средством SQL...хочу чтобы получился ответ

    administrator 101 Владимирович Сергей Егоров Главная дорога 72 (т.к. 9*8)
    USER10 OPAP5N Евгеньевна Галина Мунц КуйбРЦБ 36 (т.к. 9*4)


    а TESTID(наверху) выводится для уникальности записей...
     
    #3 andrey_a87, 16 May 2008
    Last edited: 16 May 2008
  4. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Конечно (он у вас вообще что то выводит?=/ ), потому что в данном случае группировку необходимо провести по всем идентичным полям.
     
  5. andrey_a87

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

    Joined:
    2 Mar 2008
    Messages:
    108
    Likes Received:
    1
    Reputations:
    -1
    как это можно ещё изобразить? ГОРЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ
     
  6. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Всмысле изобразить?

    Если хочешь с группировкой - вот (по понятным причинам не тестировалось)
    Code:
    SELECT DISTINCT
    users.UserLogin,
    users.UserPassword,
    ppersons.Surname,
    ppersons.Name,
    ppersons.Fathername,
    ppersons.RoadName,
    sum(courses.HourWeight)
    FROM
    users
    INNER JOIN ppersons ON (users.UserLink = ppersons.PPersonID)
    INNER JOIN stat_tests ON (users.UserID = stat_tests.UserID)
    INNER JOIN courses ON (stat_tests.TestID = courses.CourseID)
    WHERE
    (stat_tests.StatTestResult >= '0,75')
    GROUP BY UserLogin, UserPassword, Surname, Name, Fathername, RoadName
    
     
    #6 VDShark, 16 May 2008
    Last edited: 16 May 2008
  7. andrey_a87

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

    Joined:
    2 Mar 2008
    Messages:
    108
    Likes Received:
    1
    Reputations:
    -1
    Но в таком случае он считает сумму криво. При условии того, что:

    administrator 101 Владимирович Сергей Егоров Главная дорога 220 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 213 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 215 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 214 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 212 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 211 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 210 9
    administrator 101 Владимирович Сергей Егоров Главная дорога 219 9

    9*8=72, он выводит число больше 1000000 ;)
     
  8. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Тогда скинь что ли структуру участвующих табличек... а то так с утра фантазия плохо работает)