MYSQL 根据两个不同的参数加入

MYSQL joining based on two different parameters

我的代码:

SELECT eval_table.form, teacher_table.name AS Subject, teacher_table.name0 AS Author  
FROM `eval_table`
JOIN `teacher_table` ON eval_table.subj = teacher_table.user_id;

结果:

形式 主题 作者
内部审核 李四 李四

我的问题是我需要同时 JOIN teacher_table ON eval_table.auth = teacher_table.user_id; 但只有 teacher_table.name0 才能得到以下结果:

形式 主题 作者
内部审查 李四 李四

teacher_table.name0teacher_table.name

的虚拟副本

您可以对 teacher_table 进行第二次连接,然后 return 显示结果。

下面的SQL给出了一个例子:

SELECT  et.form,
        tt1.name AS Subject,
        tt2.name0 AS Author  
  FROM  eval_table et
    INNER JOIN teacher_table tt1 ON tt1.user_id = et.subj
    INNER JOIN teacher_table tt2 ON tt2.user_id = et.auth;

在这个例子中,第一个连接到 teacher_table 是在 user_id = et.subj 上,根据现有连接并使用别名 tt1。第二个连接在 user_id = et.auth 上并使用别名 tt2.

使用上述方法,您可以对不同列上的同一 table 进行多个连接。为 table 名称(即 ettt1tt2)使用 别名 可以使用相同的 table 不止一次,但在输出中唯一引用它们。

请注意,SQL 未经测试,但应该给出如何继续的指示。

您想为 table 添加别名,这样您就可以像使用另一个别名一样使用它:

SELECT evaluations.form, teachers.name, evaluators.name 
FROM evaluations 
JOIN teachers 
  ON evaluations.subject = teachers.name
JOIN teachers AS evaluators 
  ON evaluations.evaluator = evaluators.name;

顺便说一句,我冒昧地稍微标准化了命名方案。使用复数或单数,大写或不大写,但要保持一致。而 tables 不需要 _table 后缀。他们知道自己是什么。