使用外键

时间:2017-08-09 23:37:42

标签: mysql

我想使用外键水平选择一个具有不同值的列。来自另一个表名gradingperiod_id

的外键引用
first | second
   80      81

年级:

grade_id | grade | gradingperiod_id 
  1          80         7001
  2          81         7002

gradeperiod_mt:

gradeperiod_id | period
     7001           1
     7002           2

student_grade:

student_grade_id | student_id | grade_id
        1            20140540      1
        2            20140540      2

我试图像这样查询但这些给了我垂直多行的相同值。

first | second
  80      80
  81      81

SELECT 1st.grade AS first, 2nd.grade as second FROM student_grade sg
INNER JOIN grade 1st ON 1st.grade_id = sg.grade_id
INNER JOIN grade 2nd ON 2nd.grade_id = sg.grade_id

WHERE sg.student_id = 20140540

GROUP BY 1st.grade, 2nd.grade;

1 个答案:

答案 0 :(得分:1)

您要做的是 pivot ,有关许多解决方案,请参阅MySQL pivot table

SELECT MAX(IF(g.grade_id = 1, g.grade, 0)) AS first,
       MAX(IF(g.grade_id = 2, g.grade, 0)) AS second
FROM grades AS g
JOIN student_grade as sg ON sg.grade_id = g.grade_id
WHERE sg.student_id = 20140540

不需要ORDER BY,因为这只返回1行。

DEMO