2015-07-28 26 views
1

水平JOIN我想查询2个表,一个学生和包含与学生的意见另一个表。与MySQL

学生表:

| ID | Name | 
------------- 
| 1 | John | 
| 2 | Alex | 

评语表:

| ID | Student ID | Comment | 
----------------------------- 
| 1 | 1   | phoned | 
| 2 | 1   | emailed | 
| 3 | 2   | phoned | 
| 4 | 2   | emailed | 
| 5 | 2   | mailed | 

我所需的输出会是这样的:

| Student | Comment 3 | Comment 2 | Comment 1 | 
----------------------------------------------- 
| John | null  | phoned | emailed | 
| Alex | mailed | emailed | called | 

任何帮助,将不胜感激。这样做将是如下的

+1

有多少种不同类型的评论是可能的吗? –

+0

我想通过ID DESC例如 – user3253002

+0

设置的5个限度,秩序和意见是纯文本,这样可以一切 – user3253002

回答

0

方式一:

SELECT students.name, c1.comment, c2.comment, c3.comment FROM students 
LEFT JOIN (SELECT * FROM comments WHERE comment = 'phoned') as c1 
ON c1.student_id = students.id 
LEFT JOIN (SELECT * FROM comments WHERE comment = 'emailed') as c2 
ON c2.student_id = students.id 
LEFT JOIN (SELECT * FROM comments WHERE comment = 'mailed') as c3 
ON c3.student_id = students.id 

你必须增加的连接数为每个评论的类型。

+0

感谢您的答案,但我不知道评论的价值是先验的,这可以做任何事情...... – user3253002

+0

然后你不应该遵循这种方法。正如你所提到的那样,获得输出将非常困难。您最好使用简单的组,然后更改PHP中的表示或您可能使用的任何其他服务器代码。 – Vishal

+0

我必须创建一个视图.. – user3253002