使用列值作为mysql中另一列的标题

时间:2016-09-20 18:35:25

标签: php mysql

我有一个包含id,names,subject和totalMarks的数据库。每行包括学生的id,名称,主题和总标记,这意味着每个学生有多行。那不是我的问题。我的问题是学生有多个科目列出了总分数...这意味着1名学生有两个单独的行,每个科目一个。对我来说这么糟糕,我对数据格式的控制较少,因为它是从一个没有很多格式选项的系统中导出的。

以下是系统如何显示的示例

id   stdID      name    subject     totalMarks
1    BA53       Smith    Maths          100%
2    BA45       Emma     Maths          87%
3    BA53       Smith    English        98%
4    BA45       Emma     English        78%

我想将具有相同学生ID stdIDsubject的行合并为一行,使用subject列值作为total marks获取的id stdID name Maths English 1 BA53 Smith 100% 98% 2 BA45 Emma 87% 78% 的标题学生,理想情况下,最终结果看起来像是,

{{1}}

这可能使用PHP和/或MySQL吗?我不是在寻找任何人编写整个代码或任何东西。我似乎无法想到实现它的方法。我对任何方向/指示都很满意。

一如既往,感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:0)

您可以在同一个表格上使用内部联接

select a.stdID, a.name a.subject as Maths, b.subject as English
from my_table as a
inner join my_table as b on a.stdID = b.stdID
where a.subject = 'Maths' 
and b.subject ='English';

答案 1 :(得分:0)

通常,这被称为转置行和列。一种方法是:

np.append(np.linspace(a, b, n), np.linspace(b, c, n))

如果有大量主题使得扩展查询不合理,你可以使用动态SQL(除非你真的知道你在做什么,否则可能不理想)或者可以通过初始化空数据结构在PHP中完成它在遇到学生/学科对时,在迭代期间适当地填写它。