Цель: Мне было поручено экспортировать сложный набор данных из приглашения на консультацию по PHP в webapp и преобразовать его в файл excel, содержащий данные учащихся, отсортированные по их STUDENT_ID
.SELECT * FROM несколько таблиц, группа по ID
У меня есть 3 таблицы MySQL, содержащие данные. Все они имеют поле STUDENT_ID
.
Мне нужно сделать запрос, который извлекает все данные из 4 таблиц, группируя их в одну строку на основе STUDENT_ID
.
Некоторые из таблиц содержат несколько записей для одного и того же STUDENT_ID
. Если возможно, мне бы хотелось, чтобы эти несколько записей объединены в одну строку (так что каждый уникальный STUDENT_ID
находится на одной строке).
Это то, что у меня есть до сих пор, но, похоже, оно не работает, как я ожидаю.
SELECT *
from ssp_student t1
INNER JOIN ssp_student_quarterly t2
ON t1.STUDENT_ID = t2.STUDENT_ID
INNER JOIN ssp_weekly_progress t3
ON t2.STUDENT_ID = t3.STUDENT_ID
GROUP BY t1.STUDENT_ID
Таблица схема:
Table 1:
| STUDENT_ID | PEER_COACH_ID | ACTIVE | COHORT | WEEKLY_MEETING_TIME | FYE_ID | RC | AGREEMENT_SIGNED | RELEASE_SIGNED | NOTES | FACULTY_ADVISOR |
Table 2:
| STUDENT_ID | QUARTER | COUNSELLING_OFFICE | WRITING_CENTER | CASE_MANAGEMENT | SSP_SOCIAL_EVENTS | SSP_SUCCESS_SEMINAR | HOME_SUPPORT | ACCOMODATION_USED | DISCOVERY_PATHWAYS | PEER_COACHING |
Table 3:
| STUDENT_ID | QUARTER | WEEK | EMAIL_INTERACTION | PHONE_INTERACTION | TEXT_INTERACTION | INPERSON_INTERACTION | SOCIAL_INTERACTION | NUMBER_OF_SOCIAL_INTERACTIONS | CASE_MANAGEMENT_INTERACTIONS | NUMBER_OF_CASE_mANAGEMENT_INTERACTIONS | SUCCESS_SEMINAR_INTERACTION | NUMBER_OF_SUCCESS_SEMINAR_INTERACTIONS | OTHER_INTERACTION | THEMES | SURVEY_ID | NOTES |
, что мне нужно: Я хочу 1 строку для каждого STUDENT_ID
, которая содержит столбцы для всех данных, связанных с этим STUDENT_ID
в таблицах 1, 2 и 3.
Пожалуйста, сообщите нам, что вы ожидаете и почему это не работает, как вы ожидаете. Ваша схема базы данных также поможет нам. –
Здесь есть две проблемы: (1) Если в некоторых таблицах есть несколько строк с этим student_id, вы получите бесполезный результат (только одна из соответствующих строк) и (2) Если некоторые таблицы не содержат ничего об этом ученике - Ты этого не получишь. По второй причине - рассмотрим 'LEFT JOIN' – poncha
@DamienBlack Я отредактировал OP с схемой DB и более подробной информацией. – Prefix