Я не профессионал в SQL, но я играю со следующими SELECT:MySQL JOIN: несколько полей же имя
SELECT
certificate.id,
certificate.date_created,
certificate.date_approved,
certificate.notes,
certificate.id_user_student,
certificate.id_user_exm,
certificate.id_user_eval,
user.name AS student_name,
user.name AS exm_name,
user.name AS eval_name
FROM certificate
LEFT JOIN
user ON certificate.id_user_student = user.id AND
certificate.id_user_exm = user.id AND
certificate.id_user_eval = user.id
Мой Ideia с этим, чтобы быть в состоянии взять name
столбец из таблицу user
и JOIN
в таблицу certificate
для всех полей идентификатора пользователя.
В таблице certificate
столбцы id_user_student
, id_user_exm
, id_user_eval
содержат идентификаторы пользователя доступны на столе user
, и я хочу, чтобы их имена на наборе результатов.
Мой текущий запрос работает только для первого результата. Может ли кто-нибудь сказать мне, как я могу это исправить?
Спасибо!
INNER JOIN? Кроме того, не уверен, почему идентификатор должен соответствовать всем трем id_user_student, id_user_exm, id_user_eval .... рассмотрите нормализацию таблицы сертификатов, чтобы ваше условие ON просто соответствовало одному первичному ключу с одним внешним ключом. –
@ A.O. Я думаю, что OP хочет получить отдельный поиск имен для каждого из трех столбцов внешнего ключа. – spencer7593
@ spencer7593 вы правы, потому что все ученики, emxs и evals являются людьми на «пользовательской» таблице, и все они вовлечены в процесс сертификации. ;) – TCB13