![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Rian |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
сдраствуйте например есть таблицаЖ
студенты -математика -физика -чистописание -пение -музыка и в каждой оценки за год нужно сделать итоговою, в которой будет выведена информация о всех студентах и средний бал для каждого предмета ------------- математика--------физика----------чистописание --------------------------------------------------------------------- иванов -----------5--------------- - --------------------3-------- --------------------------------------------------------------------- петров-------------6---------------7-------------------- - ------- для одной подчиненной таблицы LEFT JOIN нормально делает а больше начинает множить записи... как правильно делать я пробую users LEFT JOIN (мат LEFT JOIN физ LEFT JOIN чист) on users.id Сообщение отредактировано: Rian - 14.04.2011 16:07 -------------------- Objective-C, Unity3d
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Еще раз: сколько у тебя таблиц и как они связаны? На каждый предмет своя таблица, и во всех есть поле ID? Тогда так:
SQL SELECT users.name, math.mark, physics.mark, russian.mark FROM ((users LEFT JOIN math ON users.ID = math.ID) LEFT JOIN physics ON users.ID = physics.ID) LEFT JOIN russian ON users.ID = russian.ID; |
Rian |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Еще раз: сколько у тебя таблиц и как они связаны? На каждый предмет своя таблица, и во всех есть поле ID? Код 'SELECT first_n, last_n, SUM(math.mark) as math, SUM(phis.mark)as phis, SUM(log.mark)as log '+ 'FROM((users LEFT JOIN math ON users.id = math.user_id) '+ 'LEFT JOIN phis ON users.id = phis.user_id) '+ 'LEFT JOIN log ON users.id = log.user_id '+ 'GROUP BY users.id '; ...если правильно понял, но первая добавляется нормально, а все остальные начинают множить записи ЗЫ одна таблица студенты и к ней подключется еще 3 таблицы с оценками (по каждому предмету) а в каждой из них оценки по темам за весь год -------------------- Objective-C, Unity3d
|
Rian |
![]()
Сообщение
#4
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
а можно сделать соединить строки после UNION???
например (user LEFT JOIN math UNION user LEFT JOIN phis UNION user LEFT JOIN log) group by user.id ...сделал подзапрос, если вариант без union покороче есть буду рад Сообщение отредактировано: Rian - 15.04.2011 11:37 -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ничего нигде не множится (запрос - буква в букву из моего первого ответа)...
Эскизы прикрепленных изображений ![]() |
Rian |
![]()
Сообщение
#6
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ничего нигде не множится (запрос - буква в букву из моего первого ответа)... а если оценок много и их нуна сложить или вычислить среднюю? -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Где-то в вопросе было указано про сложение или вычисление среднего? Не было. Даже если так. Вот так - все оценки по пользователям суммируются:
SQL SELECT users.name, Sum(math.mark) AS SumOfmark, Sum(physics.mark) AS SumOfmark1, Sum(russian.mark) AS SumOfmark2 FROM ((users LEFT JOIN math ON users.ID = math.userID) LEFT JOIN russian ON users.ID = russian.userID) LEFT JOIN physics ON users.ID = physics.userID GROUP BY users.name; Где множит записи? ![]() Вот так - среднее: SQL SELECT users.name, Avg(math.mark) AS AvgOfmark, Avg(physics.mark) AS AvgOfmark1, Опять множит?Avg(russian.mark) AS AvgOfmark2 FROM ((users LEFT JOIN math ON users.ID = math.userID) LEFT JOIN russian ON users.ID = russian.userID) LEFT JOIN physics ON users.ID = physics.userID GROUP BY users.name; ![]() |
Rian |
![]()
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
вроде должно...
у меня каша... я подумаю -------------------- Objective-C, Unity3d
|
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 1:22 |