我不是SQL的专业人士,但我正在使用以下SELECT:
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
我的意见是能够将表name
和user
中的JOIN
列放入certificate
表中以放置所有用户ID字段。
在表格certificate
中,id_user_student
,id_user_exm
,id_user_eval
列包含表user
上可用的用户ID,我想在结果集。
我当前的查询仅适用于第一个结果。谁能告诉我怎么解决这个问题?
谢谢!
答案 0 :(得分:2)
您需要三个连接操作,每个“查找”基于ID的名称。您需要三个对用户表的引用,每个引用一个外键引用,例如:
SELECT c.id
, c.date_created
, c.date_approved
, c.notes
, c.id_user_student
, c.id_user_exm
, c.id_user_eval
, s.name AS student_name
, e.name AS exm_name
, v.name AS eval_name
FROM certificate c
LEFT
JOIN user s ON s.id = c.id_user_student
LEFT
JOIN user e ON e.id = c.id_user_exm
LEFT
JOIN user v ON v.id = c.id_user_eval