Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите с Sql запросом (https://forum.antichat.xyz/showthread.php?t=70414)

andrey_a87 16.05.2008 09:16

Помогите с Sql запросом
 
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 то он бред выводит...(не правдивые данные)

Isis 16.05.2008 09:27

PHP код:

$res mysql_query("SELECT `courses.HourWeight` FROM `users`");
$row mysql_num_rows($res);
echo 
$row 


andrey_a87 16.05.2008 09:30

Вы меня не поняли по средством SQL...хочу чтобы получился ответ

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


а TESTID(наверху) выводится для уникальности записей...

VDShark 16.05.2008 09:51

Цитата:

Сообщение от andrey_a87
но если я делаю sum(HourWeight) а потом group by userlogin то он бред выводит...(не правдивые данные)

Конечно (он у вас вообще что то выводит?=/ ), потому что в данном случае группировку необходимо провести по всем идентичным полям.

andrey_a87 16.05.2008 09:55

как это можно ещё изобразить? ГОРЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ ЮЮЮЮЮЮ

VDShark 16.05.2008 09:57

Цитата:

Сообщение от andrey_a87
как это можно ещё изобразить? ГОРЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ ЮЮЮЮЮЮ

Всмысле изобразить?

Если хочешь с группировкой - вот (по понятным причинам не тестировалось)
Код:

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


andrey_a87 16.05.2008 10:11

Но в таком случае он считает сумму криво. При условии того, что:

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 ;)

VDShark 16.05.2008 10:22

Тогда скинь что ли структуру участвующих табличек... а то так с утра фантазия плохо работает)


Время: 00:56