CROSSTAB报告 - MYSQL

时间:2012-01-23 21:25:57

标签: php mysql crosstab

我想使用PHP和以下Mysql数据生成HTML报告:

视频

id | title
01 | video1
02 | video2
03 | video3
04 | video4

陪审员

id | Name
01 | juror1
02 | juror2
03 | juror3

评论

 id_video    | id_juror  | grade
    01       | 01        | 5,2
    02       | 01        | 4,5
    03       | 01        | 2,7
    04       | 01        | 7,0
    01       | 02        | 3,2
    02       | 02        | 9,6
    03       | 02        | 4,7
    04       | 02        | 8,3

OUTPUT应该是这样的:

       | juror1  | juror2  | juror3
video1 |   5,2   |   3,2   | NULL
video2 |   4,5   |   9,6   | NULL
video3 |   2,7   |   4,7   | NULL
video4 |   7,0   |   8,3   | NULL

我尝试了许多不同的查询和交叉表教程,但他们会将CASE用于数量有限的视频和陪审员,但我需要它是动态的。

2 个答案:

答案 0 :(得分:1)

在MySQL中,您不能使用 查询来执行此操作。 http://www.databasejournal.com/features/mysql/article.php/3871556/article.htm中描述的一种方法是创建一个存储过程,查找所有可能的视频和所有可能的陪审员,然后动态构建SQL查询。但是既然你是用PHP编写的,我认为你会发现在PHP中比在存储过程中更容易。或者,您可以运行简单的SELECT videos.title, jurors.name, reviews.grade FROM reviews JOIN videos ON videos.id = reviews.id_video JOIN jurors ON jurors.id = reviews.id_juror并在PHP中处理翻译。

答案 1 :(得分:0)

使用MySQL Pivot table generator即可立即执行此报告。  系统将要求您输入报告的列,行和值的数据源。 在列中:您可以选择 JURORS 表和名称列,如以下屏幕截图所示:

enter image description here

同样,您应该选择视频表和标题列作为行的数据源,然后最终选择值的评论表和成绩列,您将获得报告,该报告将自动从您的数据库中提供

有关详细信息,请查看以下教程: http://mysqlpivottable.net/Tutorial.html