IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> SQL несколько LEFT join ?
Rian
сообщение 14.04.2011 16:06
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 394
Пол: Мужской

Репутация: -  9  +


сдраствуйте например есть таблицаЖ

студенты
-математика
-физика
-чистописание
-пение
-музыка

и в каждой оценки за год
нужно сделать итоговою, в которой будет выведена информация о всех студентах и средний бал для каждого предмета

------------- математика--------физика----------чистописание
---------------------------------------------------------------------
иванов -----------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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 14.04.2011 16:08
Сообщение #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
сообщение 15.04.2011 10:27
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 394
Пол: Мужской

Репутация: -  9  +


Цитата(volvo @ 14.04.2011 16:08) *

Еще раз: сколько у тебя таблиц и как они связаны? На каждый предмет своя таблица, и во всех есть поле 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.07.2025 1:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"