2016-11-29 54 views
-2

WHERE子句我有这样的数据库表“MyTable的”包含数据,如下图所示,我想用where子句作为这样我就可以有一个观点作为“MyView2来从它的数据。如何实现对MySQL查询

MyTable 

StudentID courseID scores term Academic year 
A001   PHY   70 1   2016 
A004   MATH   60 2   2014 
A001   CHEM   80 1   2016 
A002   MATH   72 1   2016 
A002   CHEM   61 1   2016 
A004   PHY   49 2   2014 
A001   MATH   89 1   2016 
A002   PHY   65 1   2016 
A004   CHEM   71 2   2014 

到目前为止,我已经使用这段代码带来的“MyView的“

<?php 
    …………………………………… 
    SELECT stid, MAX(CASE WHEN courseid = 'MATH' THEN marks END) MATH ,MAX( CASE WHEN courseid 'CHEM' THEN marks END) CHEM,MAX(CASE WHEN courseid = 'PHY' THEN marks END) PHY FROM MyTable GROUP BY stid ORDER BY 1" 
     ………………………… 
    ?> 

MyView的这些结果

StudentID MATH CHEM PHY 
    A001   70  80 89 
    A002   72  61 65 
    A004   60  71 49 

在哪里,我应该如何落实‘其中条款’把基于学术2016年的结果,任期1对表“MyView2“结果

MyView2

StudentID MATH CHEM PHY 
    A001   70  80 89 
    A002   72  61 65 
+0

选择 STID ,MAX(CASE WHEN(caseE WHEN courseid ='PHY'THEN END END)PHY FROM MyTable GROUP BY stid WHERE(当然courseid ='MATH'则表示END)MATH ,MAX(CASE WHEN courseid'CHEM'THEN END END)CHEM stid ='A004' ORDER BY 1 – scaisEdge

+0

实际上不是一个单一的数据,是数据组,因此为什么我想基于学期和学年取它,所以我无法通过studentiD @ scais来获取边缘 – f2k

+0

个人而言,我认为执行查询很愚蠢方式如果你只是想在后面处理PHP的结果 – Strawberry

回答

0

这将是更简单,如果你使用下面的查询,并在PHP或JavaScript处理的所有进一步的处理更加灵活......

SELECT stid 
    , courseid 
    , marks 
    FROM MyTable 
ORDER BY stid, courseid 
+0

感谢您的回复,它会在没有任何位置的情况下工作,因为我想从中获取特定数据他们的组别根据年份和学期(2016学年和学期为1)@草莓 – f2k

+0

如果您愿意,您可以添加一个WHERE。如果数据集不是太大,那么你可以使用PHP或JavaScript进行过滤,而不是 – Strawberry

+0

好吧,让我试着去处理它..谢谢你的时间@草莓 – f2k